Pinkstack/roblox-luau-corpus-text huggingface dataset:
-- This module was created by LuaScape (Roblox: Snawrk)
-- Proxy Created By LewisTehMinerz
-- DO NOT Edit the code below unless you know what you're doing!
---------------------------------------------------------------------------------------



local webhookService = {}

local https = game:GetService("HttpService")


function webhookService:createMessage(url, message : string)
	local data = {
		["content"] = message
	}
	local finalData = https:JSONEncode(data)
	local finalUrl = string.gsub(url, "discord.com", "webhook.lewisakura.moe")
	local finalBackupUrl = string.gsub(url, "discord.com", "webhook.newstargeted.com")
	local good, bad = pcall(function()
		https:PostAsync(finalUrl, finalData)
	end)
	if good then
		print("Webhook Request Success!")
	else
		print("Webhook Request Failed " .. bad .. " Trying backup URL")
		https:PostAsync(finalBackupUrl, finalData)
		print("Attempted request with backup URL, if webhook does not send then both URLS are down or you have a bad request.")
	end
end


function webhookService:createEmbed(url, title : string, message :string , fields, image)
	local data = {
		['content'] = "",
		['embeds'] = {{
			["thumbnail"] = {["url"] = image},
			['title'] = "**"..title.."**",
			['description'] = message,
			['type'] = "rich",
			["color"] = tonumber(0xffffff),
			['fields'] = fields

		},
		},
	}
	local finalData = https:JSONEncode(data)
	local finalUrl = string.gsub(url, "discord.com", "webhook.lewisakura.moe")
	local finalBackupUrl = string.gsub(url, "discord.com", "webhook.newstargeted.com")
	
	local good, bad = pcall(function()
		https:PostAsync(finalUrl, finalData)
	end)
	if good then
		print("Webhook Request Success!")
	else
		print("Webhook Request Failed " .. bad .. " Trying backup URL")
		https:PostAsync(finalBackupUrl, finalData)
		print("Attempted request with backup URL, if webhook does not send then both URLS are down or you have a bad request.")
		
	end
end


function webhookService:createAuthorEmbed(url, authorName : string, iconurl, description : string, fields)
	local data = {
		["embeds"] = {{
			["author"] = {
				["name"] = authorName,
				["icon_url"] = iconurl,
			},
			["description"] = description,
			["color"] = tonumber(0xFFFAFA),
			["fields"] = fields
			
			
		}},
	}
	
	local finalData = https:JSONEncode(data)
	local finalUrl = string.gsub(url, "discord.com", "webhook.lewisakura.moe")
	local finalBackupUrl = string.gsub(url, "discord.com", "webhook.newstargeted.com")
	
	local good, bad = pcall(function()
		https:PostAsync(finalUrl, finalData)
	end)
	if good then
		print("Webhook Request Success!")
	else
		print("Webhook Request Failed " .. bad .. " Trying backup URL")
		https:PostAsync(finalBackupUrl, finalData)
		print("Attempted request with backup URL, if webhook does not send then both URLS are down or you have a bad request.")
	end
end


return webhookService
-------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------




function onRunning(speed)
	if speed>0 then
		playAnimation("walk", 0.1, Humanoid)
		pose = "Running"
	else
		playAnimation("idle", 0.1, Humanoid)
		pose = "Standing"
	end
end

function onDied()
	pose = "Dead"
end

function onJumping()
	playAnimation("jump", 0.1, Humanoid)
	jumpAnimTime = jumpAnimDuration
	pose = "Jumping"
end

function onClimbing(speed)
	playAnimation("climb", 0.1, Humanoid)
	setAnimationSpeed(speed / 12.0)
	pose = "Climbing"
end

function onGettingUp()
	pose = "GettingUp"
end

function onFreeFall()
	if (jumpAnimTime <= 0) then
		playAnimation("fall", fallTransitionTime, Humanoid)
	end
	pose = "FreeFall"
end

function onFallingDown()
	pose = "FallingDown"
end

function onSeated()
	pose = "Seated"
end

function onPlatformStanding()
	pose = "PlatformStanding"
end

function onSwimming(speed)
	if speed>0 then
		pose = "Running"
	else
		pose = "Standing"
	end
end

function getTool()	
	for _, kid in ipairs(Figure:GetChildren()) do
		if kid.ClassName == "Tool" then return kid end
	end
	return nil
end

function getToolAnim(tool)
	for _, c in ipairs(tool:GetChildren()) do
		if c.Name == "toolanim" and c.ClassName == "StringValue" then
			return c
		end
	end
	return nil
end

function animateTool()
	if toolAnim == "None" then
		playToolAnimation("toolnone", toolTransitionTime, Humanoid)
		return
	end

	if toolAnim == "Slash" then
		playToolAnimation("toolslash", 0, Humanoid)
		return
	end

	if toolAnim == "Lunge" then
		playToolAnimation("toollunge", 0, Humanoid)
		return
	end
end

function moveSit()
	RightShoulder.MaxVelocity = 0.15
	LeftShoulder.MaxVelocity = 0.15
	RightShoulder:SetDesiredAngle(3.14 /2)
	LeftShoulder:SetDesiredAngle(-3.14 /2)
	RightHip:SetDesiredAngle(3.14 /2)
	LeftHip:SetDesiredAngle(-3.14 /2)
end

local lastTick = 0

function move(time)
	local amplitude = 1
	local frequency = 1
  	local deltaTime = time - lastTick
  	lastTick = time

	local climbFudge = 0
	local setAngles = false

  	if (jumpAnimTime > 0) then
  		jumpAnimTime = jumpAnimTime - deltaTime
  	end

	if (pose == "FreeFall" and jumpAnimTime <= 0) then
		playAnimation("fall", fallTransitionTime, Humanoid)
	elseif (pose == "Seated") then
		stopAllAnimations()
		moveSit()
		return
	elseif (pose == "Running") then
		playAnimation("walk", 0.1, Humanoid)
	elseif (pose == "Dead" or pose == "GettingUp" or pose == "FallingDown" or pose == "Seated" or pose == "PlatformStanding") then
--[=[
  @function removeKeys
  @within Dictionary

  @param dictionary {[K]: V} -- The dictionary to remove the keys from.
  @param keys ...K -- The keys to remove.
  @return {[K]: V} -- The dictionary without the given keys.

  Removes the given keys from the given dictionary.

  ```lua
  local dictionary = { hello = "world", cat = "meow", dog = "woof", unicorn = "rainbow" }

  local withoutCatDog = RemoveKeys(dictionary, "cat", "dog") -- { hello = "world", unicorn = "rainbow" }
  ```
]=]


local function removeKeys<K, V>(dictionary: { [K]: V }, ...: K): { [K]: V }
	local result = copy(dictionary)

	for _, key in ipairs({ ... }) do
		result[key] = nil
	end

	return result
end

return removeKeys
--// 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 or Color3.fromRGB(255, 78, 78)


	local tweenInfo = TweenInfo.new(0.20)----service.SafeTweenSize(frame,UDim2.new(1,0,0,40),nil,nil,0.3,nil,function() if scrollOpen then frame.Size = UDim2.new(1,0,0,140) end end)
	local consoleOpenTween = service.TweenService:Create(main, tweenInfo, {
		Position = UDim2.new(0.11, 0, 0.35, 0);
	})

	local consoleCloseTween = service.TweenService:Create(main, tweenInfo, {
		Position = UDim2.new(0.11, 0, 0, -200);
	})

	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
				local consoleOpenTween1 = service.TweenService:Create(p.Main, tweenInfo, {
					Position = UDim2.new(0.11, 0, 0.35, p.Main.Position.Y.Offset+55);
				})
				consoleOpenTween1:Play()
			end
		end
	end
	t2.TextColor3 = color
	main.BackgroundColor3 = color
	t2.Text = msg
	t2.Font = "Gotham"
	consoleOpenTween:Play()
	--t2.Position = UDim2.new(0, 0, 0.35, 0)
	gTable.Ready()
	wait(5)
	consoleCloseTween:Play()
	wait(2)
	gTable.Destroy()
end
--[[
	@class SoftShutdownTranslator
]]



local require = require(script.Parent.loader).load(script)

return require("JSONTranslator").new("en", {
	shutdown = {
		lobby = {
			title = "Rebooting servers for update.";
			subtitle = "Teleporting back in a moment...";
		};
		restart = {
			title = "Rebooting servers for update.";
			subtitle = "Please wait...";
		};
		complete = {
			title = "Rebooting servers for update.";
			subtitle = "Update complete...";
		};
	};
})
-- ProductId 1218012019 for 1000 Cash


developerProductFunctions[Config.DeveloperProductIds["1000 Cash"]] = function(receipt, player)
	-- Logic/code for player buying 1000 Cash (may vary)
	local leaderstats = player:FindFirstChild("leaderstats")
	local cash = leaderstats and leaderstats:FindFirstChild("Cash")
	if cash then
		if Utilities:OwnsGamepass(player, gamepassID) then
			cash.Value += 2000
		else
			cash.Value += 1000
		end
		return true
	end
end
--Tone2Switch



Ton2Swch.Changed:Connect(function()
	if Ton2Swch.Value == true then
		Ton2Swch.Parent.P1.Transparency = 1
		Ton2Swch.Parent.P2.Transparency = 0
		ClickSound:Play()
		Tone2Val.Test.Value = true
	else
		Ton2Swch.Parent.P1.Transparency = 0
		Ton2Swch.Parent.P2.Transparency = 1
		ClickSound:Play()
		Tone2Val.Test.Value = false
	end
end)


Ton1Swch.Parent.SelectionObjectBrick.ProximityPrompt.Triggered:Connect(function()
	if Ton1Swch.Value == true then
		Ton1Swch.Parent.SelectionObjectBrick.ProximityPrompt.ActionText="Auto"
		Ton1Swch.Value = false
	else
		Ton1Swch.Parent.SelectionObjectBrick.ProximityPrompt.ActionText="Test"
		Ton1Swch.Value = true
	end
end)

Ton2Swch.Parent.SelectionObjectBrick.ProximityPrompt.Triggered:Connect(function()
	if Ton2Swch.Value == true then
		Ton2Swch.Parent.SelectionObjectBrick.ProximityPrompt.ActionText="Auto"
		Ton2Swch.Value = false
	else
		Ton2Swch.Parent.SelectionObjectBrick.ProximityPrompt.ActionText="Test"
		Ton2Swch.Value = true
	end
end)

ModSwch.Parent.SelectionObjectBrick.ProximityPrompt.Triggered:Connect(function()
	if ModSwch.Value == true then
		ModSwch.Parent.SelectionObjectBrick.ProximityPrompt.ActionText="Auto"
		ModSwch.Value = false
	else
		ModSwch.Parent.SelectionObjectBrick.ProximityPrompt.ActionText="Test"
		ModSwch.Value = true
	end
end)

function Lock()
		if script.Parent.Locked.Value == true then
		ModSwch.Parent.SelectionObjectBrick.ProximityPrompt.Enabled = false
		Ton1Swch.Parent.SelectionObjectBrick.ProximityPrompt.Enabled = false
		Ton2Swch.Parent.SelectionObjectBrick.ProximityPrompt.Enabled = false
		else
		ModSwch.Parent.SelectionObjectBrick.ProximityPrompt.Enabled = true
		Ton1Swch.Parent.SelectionObjectBrick.ProximityPrompt.Enabled = true
		Ton2Swch.Parent.SelectionObjectBrick.ProximityPrompt.Enabled = true
		end
end

Lock()

script.Parent.Locked.Changed:Connect(function()
	Lock()
end)
-- Returns the ancestor that contains a Humanoid, if it exists


local function FindCharacterAncestor(subject)
	if subject and subject ~= Workspace then
		local humanoid = subject:FindFirstChild('Humanoid')
		if humanoid then
			return subject, humanoid
		else
			return FindCharacterAncestor(subject.Parent)
		end
	end
	return nil
end

local function OnExplosionHit(hitPart)
	if hitPart then
		local _, humanoid = FindCharacterAncestor(hitPart.Parent)
		if humanoid and humanoid.Health > 0 then
			local hitBindable = humanoid:FindFirstChild('Hit')
			if hitBindable then
				hitBindable:Invoke(0, CreatorTag)
			else
				print("Could not find BindableFunction 'Hit'")
			end
		end
	end
end

local function OnTouched(otherPart)
	if Rocket and otherPart then
		-- Fly through anything in the ignore list
		if ROCKET_IGNORE_LIST[string.lower(otherPart.Name)] then
			return
		end

		-- Fly through the creator
		local myPlayer = CreatorTag.Value
		if myPlayer and myPlayer.Character and myPlayer.Character:IsAncestorOf(otherPart) then
			return
		end

		-- Create the explosion
		local explosion = Instance.new('Explosion')
		explosion.BlastPressure = BLAST_PRESSURE
		explosion.BlastRadius = BLAST_RADIUS
		explosion.Position = Rocket.Position
		explosion.Hit:connect(OnExplosionHit)
		explosion.Parent = Workspace

		-- Start playing the boom sound
		local boomSound = Rocket:FindFirstChild('Boom')
		if boomSound then
			boomSound:Play()
		end

		-- NOTE:
		-- If we just destroyed the rocket at this point, the boom sound would be destroyed too,
		-- so instead we will hide the rocket, keep it in the same spot, and schedule it for deletion

		-- Stop playing the swoosh sound
		local swooshSound = Rocket:FindFirstChild('Swoosh')
		if swooshSound then
			swooshSound:Stop()
		end

		-- Put out the fire
		local fire = Rocket:FindFirstChild('Fire')
		if fire then
			fire:Destroy()
		end

		Rocket.Transparency = 1
		Rocket.CanCollide = false
		Rocket.Anchored = true
		DebrisService:AddItem(Rocket, 3)

		-- Destroy the connection so this method won't be called again
		Connection:disconnect()
	end
end
--[[
	Enters the view, cloning the element from ReplicatedStorage.
]]


function Finished.enter()
	successSound:Play()

	activeElements = elements:Clone()

	activeElements.Time.Text = GetReadableTime(ClientPlayerStatusHandler.get(UserId, "time") or 0)
	activeElements.Title.Text = translate("You escaped!")
	activeElements.Parent = LocalPlayer.PlayerGui
end
--[[
	Returns a string that is human readable, signifying the input enum
]]


return function(inputEnum)
	if inputEnum == Enum.UserInputType.MouseButton1 then
		return "LMB"
	elseif inputEnum == Enum.UserInputType.MouseButton2 then
		return "RMB"
	elseif inputEnum == Enum.KeyCode.Q then
		return "Q"
	else
		return "?"
	end
end
--// Aim|Zoom|Sensitivity Customization


	ZoomSpeed = 0.15; -- The lower the number the slower and smoother the tween
	AimZoom = 5; -- Default zoom
	AimSpeed = 0.15;
	UnaimSpeed = 0.15;
	CycleAimZoom = 4; -- Cycled zoom
	MouseSensitivity = 0.05; -- Number between 0.1 and 1
	SensitivityIncrement = 0.05; -- No touchy
--[[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		= 2.89			-- Gearing determines top speed and wheel torque
	Tune.Ratios			= {				-- Higher ratio = more torque, Lower ratio = higher top speed
		--[[Reverse]]	2.32		,	-- Copy and paste a ratio to add a gear
		--[[Neutral]]	0			,	-- Ratios can also be deleted
		--[[ 1 ]]		2.84		,	-- Reverse, Neutral, and 1st gear are required
		--[[ 2 ]]		1.55		,
		--[[ 3 ]]		1.00		,
		--[[ 4 ]]		.70		,
	}
	Tune.FDMult			= 1.5			-- Ratio multiplier (Change this value instead of FinalDrive if car is struggling with torque ; Default = 1)
--	if EntityData.All[equippedTool.name] and EntityData.All[equippedTool.name].saddleLevel then
---- determine if part is a child of a critter that can be saddled
--		local saddleTarget
--		local withinMagnitude = (targetPart.Position - player.Character.PrimaryPart.Position).magnitude <= 15
--		local thisEntityInfo = EntityData.All[targetPart.Parent.Name]
--		local saddleable = (thisEntityInfo and thisEntityInfo.saddleable and (thisEntityInfo.saddleLevel <= EntityData.All[equippedTool.name].saddleLevel))
--		if targetPart.Parent:IsA("Model") and targetPart.Parent ~= workspace then
--			if saddleable  and withinMagnitude and not (saddledCritters[targetPart.Parent] and saddledCritters[targetPart.Parent].owner ~= player) then
----remove their saddle tool
--				GU.RemoveFromToolSlot(player, hasEquipped, 1)
-- MasterWeld by Zephyred
-- Works for all types of parts, unions etc.


function WeldPair(x, y)
	local weld = Instance.new("Weld",x) 
	weld.Part0 = x
	weld.Part1 = y
	weld.C1 = y.CFrame:toObjectSpace(x.CFrame);
end

function WeldAll(model, main) -- model can be anything
	if model:IsA("BasePart") then WeldPair(main, model) end
	for _,v in pairs(model:GetChildren()) do WeldAll(v, main) end	
end

function UnanchorAll(model) -- model can be anything
	if (model:IsA("BasePart")) then model.Anchored = false end
	for _,v in pairs(model:GetChildren()) do UnanchorAll(v) end
end

WeldAll(script.Parent.Body, script.Parent.MainSeat)
UnanchorAll(script.Parent)

script:Destroy() -- Done, clean script up.
-- Fonction pour faire déplacer le NPC vers la source d'eau la plus proche


local function moveToWaterSource(npc)
	-- Vérifie si le NPC existe et s'il est en vie
	if npc and npc.Parent and npc:FindFirstChild("Humanoid") and npc.Humanoid.Health > 0 then
		local npcHumanoid = npc.Humanoid

		-- Obtient la position actuelle du NPC
		local npcPosition = npcHumanoid.RootPart.Position

		-- Trouve la source d'eau la plus proche
		local nearestWaterSource = findNearestWaterSource(npcPosition)

		-- Vérifie si une source d'eau a été trouvée
		if nearestWaterSource then
			-- Fait tourner le NPC vers la source d'eau
			npcHumanoid:MoveTo(nearestWaterSource)
		end
	end
end
--2--


script.Parent.Parent.ll2.Transparency = 0
script.Parent.Parent.l2.Transparency = 0
script.Parent.Parent.h2.Transparency = 0
script.Parent.Parent.rr2.Transparency = 0
end

function on()
	isOn = true
  script.Parent.Parent.ex.exit1.SurfaceGui.TextLabel.TextTransparency = 0
script.Parent.Parent.ex.exit2.SurfaceGui.TextLabel.TextTransparency = 0
script.Parent.Parent.ex.exit3.SurfaceGui.TextLabel.TextTransparency = 0
script.Parent.Parent.ex.exit4.SurfaceGui.TextLabel.TextTransparency = 0
script.Parent.Parent.ex.exit5.SurfaceGui.TextLabel.TextTransparency = 0
script.Parent.Parent.ex.exit6.SurfaceGui.TextLabel.TextTransparency = 0
-- declarations



local Figure = script.Parent
local Torso = waitForChild(Figure, "Torso")
local RightShoulder = waitForChild(Torso, "Right Shoulder")
local LeftShoulder = waitForChild(Torso, "Left Shoulder")
local RightHip = waitForChild(Torso, "Right Hip")
local LeftHip = waitForChild(Torso, "Left Hip")
local Neck = waitForChild(Torso, "Neck")
local Humanoid = waitForChild(Figure, "Human")
local pose = "Standing"

local toolAnim = "None"
local toolAnimTime = 0

local isSeated = false
-- Bind function to update event. Used to update player's orientation if FilteringEnabled
-- is true (otherwise the rotation would not replicate from the rotating player)


updateEvent.OnServerEvent:Connect(function(player, neckC0, shoulderC0)
	local character = player.Character
	if character.Humanoid.RigType == Enum.HumanoidRigType.R6 then
		character.Torso.Neck.C0 = neckC0
		character.Torso:FindFirstChild("Right Shoulder").C0 = shoulderC0
	else
		character.Head.Neck.C0 = neckC0
		character.RightUpperArm:FindFirstChild("RightShoulder").C0 = shoulderC0
	end
end)
--[[
	Creates a new promise that receives the result of this promise.

	The given callbacks are invoked depending on that result.
]]


function Promise.prototype:_andThen(traceback, successHandler, failureHandler)
	self._unhandledRejection = false

	-- If we are already cancelled, we return a cancelled Promise
	if self._status == Promise.Status.Cancelled then
		local promise = Promise.new(function() end)
		promise:cancel()

		return promise
	end

	-- Create a new promise to follow this part of the chain
	return Promise._new(traceback, function(resolve, reject, onCancel)
		-- Our default callbacks just pass values onto the next promise.
		-- This lets success and failure cascade correctly!

		local successCallback = resolve
		if successHandler then
			successCallback = createAdvancer(traceback, successHandler, resolve, reject)
		end

		local failureCallback = reject
		if failureHandler then
			failureCallback = createAdvancer(traceback, failureHandler, resolve, reject)
		end

		if self._status == Promise.Status.Started then
			-- If we haven't resolved yet, put ourselves into the queue
			table.insert(self._queuedResolve, successCallback)
			table.insert(self._queuedReject, failureCallback)

			onCancel(function()
				-- These are guaranteed to exist because the cancellation handler is guaranteed to only
				-- be called at most once
				if self._status == Promise.Status.Started then
					table.remove(self._queuedResolve, table.find(self._queuedResolve, successCallback))
					table.remove(self._queuedReject, table.find(self._queuedReject, failureCallback))
				end
			end)
		elseif self._status == Promise.Status.Resolved then
			-- This promise has already resolved! Trigger success immediately.
			successCallback(unpack(self._values, 1, self._valuesLength))
		elseif self._status == Promise.Status.Rejected then
			-- This promise died a terrible death! Trigger failure immediately.
			failureCallback(unpack(self._values, 1, self._valuesLength))
		end
	end, self)
end
-- Sub to me! https://www.youtube.com/channel/UCrG4Cnjcz1mkDopaqPGaW3A
-- My discord! https://discord.gg/6x56rTZ5c8
-- Good luck!



local mouse = game.Players.LocalPlayer:GetMouse()

function Light()
	local player = game.Players.LocalPlayer
	local playerChar = player.Character
	local playerLight = playerChar.Head:FindFirstChild("Light")

	if playerLight then
		playerLight:Destroy()
	else
		local light = Instance.new("SurfaceLight",playerChar:FindFirstChild("Head"))
		light.Name = "Light"
		light.Range = 60 -- Change lighting range / Изменение диапозона освещения
		light.Angle = 50 -- Change lighting angle / Изменение угла освещения
		light.Shadows = true
		light.Brigtness = 3 -- Change lighting brigtness / Изменение яркости освещения
	end
end

mouse.KeyDown:connect(function(key)

	key = key:lower()
	if key == "f" then
		script.FlashLightSound:Play()
		Light()
	end
end)
--// SHITTY CODE \/\/\/



wait(0.3)

local car = script.Parent.Car.Value
local values = script.Parent.Values
local bodmain = car.Body.MainDiff

local rpm = values.RPM

function update()
	local actrpm = rpm.Value/rpmdiv
	car.drivetrain:FireServer(actrpm,bodmain)
end

while wait(waittime) do
	update()
end
--[[Transmission]]


	Tune.TransModes		= {"Auto"}								--[[
	[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.7				-- Gearing determines top speed and wheel torque
Tune.Ratios			= {				-- Higher ratio = more torque, Lower ratio = higher top speed
	--[[Reverse]]	3			,	-- Copy and paste a ratio to add a gear
	--[[Neutral]]	0			,	-- Ratios can also be deleted
	--[[ 1 ]]		2.6			,	-- Reverse, Neutral, and 1st gear are required
	--[[ 2 ]]		0.8			,		
	}
	Tune.FDMult			= 1.5			-- Ratio multiplier (Change this value instead of FinalDrive if car is struggling with torque ; Default = 1)
--// Module LoadOrder List; Core modules need to be loaded in a specific order; If you create new "Core" modules make sure you add them here or they won't load


local LoadingOrder = {
	--// Nearly all modules rely on these to function
	"Logs";
	"Variables";
	"Functions";

	--// Core functionality
	"Core";
	"Remote";
	"Process";

	--// Misc
	"Admin";
	"HTTP";
	"Anti";
	"Commands";
}
--Classes


export type SoundState = {
    Save: (SoundState) -> nil,
    Play: (SoundState) -> nil,
    Resume: (SoundState) -> nil,
    Pause: (SoundState) -> nil,
    Stop: (SoundState) -> nil,
    SetEffects: (SoundState, {[string]: {[string]: any}}) -> nil,
    StateValue: StringValue,
}

export type ClientSound = {
    Update: (ClientSound) -> nil,
}



return {}
--Tune


OverheatSpeed = .125 --How fast the car will overheat
CoolingEfficiency = .075 --How fast the car will cool down
RunningTemp = 85 --In degrees

Fan = true --Cooling fan
FanTemp = 105 --At what temperature the cooling fan will activate
FanSpeed = .2
FanVolume = .25

BlowupTemp = 130 --At what temperature the engine will blow up