Pinkstack/roblox-luau-corpus-text huggingface dataset:
--Keybinds & Main Lean Script


UIS.InputBegan:Connect(function(key, isTyping)
	if key.KeyCode == Enum.KeyCode.E then
		tweenService:Create(humanoid ,ti, {CameraOffset = Vector3.new(2,0,0)}):Play()
	end
	if key.KeyCode == Enum.KeyCode.Q then
		tweenService:Create(humanoid ,ti, {CameraOffset = Vector3.new(-2,0,0)}):Play()
	end
	
end)

UIS.InputEnded:Connect(function(key)
	if key.KeyCode == Enum.KeyCode.E or key.KeyCode == Enum.KeyCode.Q then
		tweenService:Create(humanoid ,ti, {CameraOffset = Vector3.new(0,0,0)}):Play()
	end
end)
--[[[Default Controls]]


	--Peripheral Deadzones
	Tune.Peripherals = {
		MSteerWidth				= 67		,	-- Mouse steering control width	(0 - 100% of screen width)
		MSteerDZone				= 10		,	-- Mouse steering deadzone (0 - 100%)
		
		ControlLDZone			= 5			,	-- Controller steering L-deadzone (0 - 100%)
		ControlRDZone			= 5			,	-- Controller steering R-deadzone (0 - 100%)
	}
	
	--Control Mapping
	Tune.Controls = {
		
	--Keyboard Controls
		--Mode Toggles
		ToggleTCS				= Enum.KeyCode.T					,
		ToggleABS				= Enum.KeyCode.Y					,
		ToggleTransMode			= Enum.KeyCode.M					,
		ToggleMouseDrive		= Enum.KeyCode.R					,
		
		--Primary Controls
		Throttle				= Enum.KeyCode.Up					,
		Brake					= Enum.KeyCode.Down					,
		SteerLeft				= Enum.KeyCode.Left					,
		SteerRight				= Enum.KeyCode.Right				,
		
		--Secondary Controls
		Throttle2				= Enum.KeyCode.W					,
		Brake2					= Enum.KeyCode.S					,
		SteerLeft2				= Enum.KeyCode.A					,
		SteerRight2				= Enum.KeyCode.D					,
		
		--Manual Transmission
		ShiftUp					= Enum.KeyCode.E					,
		ShiftDown				= Enum.KeyCode.Q					,
		Clutch					= Enum.KeyCode.LeftShift			,
		
		--Handbrake
		PBrake					= Enum.KeyCode.LeftShift					,
		
	--Mouse Controls
		MouseThrottle			= Enum.UserInputType.MouseButton1	,
		MouseBrake				= Enum.UserInputType.MouseButton2	,
		MouseClutch				= Enum.KeyCode.W					,
		MouseShiftUp			= Enum.KeyCode.E					,
		MouseShiftDown			= Enum.KeyCode.Q					,
		MousePBrake				= Enum.KeyCode.LeftShift			,
		
	--Controller Mapping
		ContlrThrottle			= Enum.KeyCode.ButtonR2				,
		ContlrBrake				= Enum.KeyCode.ButtonL2				,
		ContlrSteer				= Enum.KeyCode.Thumbstick1			,
		ContlrShiftUp			= Enum.KeyCode.ButtonY				,
		ContlrShiftDown			= Enum.KeyCode.ButtonX				,
		ContlrClutch			= Enum.KeyCode.ButtonR1				,
		ContlrPBrake			= Enum.KeyCode.ButtonL1				,
		ContlrToggleTMode		= Enum.KeyCode.DPadUp				,
		ContlrToggleTCS			= Enum.KeyCode.DPadDown				,
		ContlrToggleABS			= Enum.KeyCode.DPadRight			,
	}
--script.Parent.II.Velocity = script.Parent.II.CFrame.lookVector *script.Parent.Speed.Value
--script.Parent.III.Velocity = script.Parent.III.CFrame.lookVector *script.Parent.Speed.Value


script.Parent.IIII.Velocity = script.Parent.IIII.CFrame.lookVector *script.Parent.Speed.Value
script.Parent.J.Velocity = script.Parent.J.CFrame.lookVector *script.Parent.Speed.Value
--		debug.profilebegin("AI Offload Loop")


		local activate, deactivate = {}, {}
		local num = 0 
		for _,critter in next,workspace.Critters:GetChildren() do
			num = num + 1
			if critter.PrimaryPart and character and character.PrimaryPart then
				local distance = (character.PrimaryPart.Position - critter.PrimaryPart.Position).magnitude
				
				if distance < ACTIVATE_AI_RANGE then
					table.insert(activate, critter)
				else
					table.insert(deactivate, critter)
				end
			end
			
			if num % 10 == 0 then
				RS.Heartbeat:Wait()
			end
		end
		Rep.Relay.AI.AIUpdated:FireServer(activate, deactivate)
		elapsed = 0
--[[Susupension]]


	Tune.SusEnabled		= true		-- works only in with PGSPhysicsSolverEnabled, defaults to false when PGS is disabled
	
	--Front Suspension
	Tune.FSusDamping	= 500		-- Spring Dampening
	Tune.FSusStiffness	= 9999		-- Spring Force
	Tune.FSusLength		= 1.5			-- Suspension length (in studs)
	Tune.FSusMaxExt		= .6		-- Max Extension Travel (in studs)
	Tune.FSusMaxComp	= .5		-- Max Compression Travel (in studs)
	Tune.FSusAngle		= 80		-- Suspension Angle (degrees from horizontal)
		
	Tune.FWsBoneLen		= 5			-- Wishbone Length
	Tune.FWsBoneAngle	= 0			-- Wishbone angle (degrees from horizontal)
	Tune.FAnchorOffset	= {			-- Suspension anchor point offset (relative to center of wheel)
	 --[[Lateral]]		-.4		,	-- positive = outward
	 --[[Vertical]]		-.5		,	-- positive = upward
	 --[[Forward]]		0		}	-- positive = forward
	
	--Rear Suspension
	Tune.RSusDamping	= 500		-- Spring Dampening
	Tune.RSusStiffness	= 9999		-- Spring Force
	Tune.RSusLength		= 1.5			-- Suspension length (in studs)
	Tune.RSusMaxExt		= .6		-- Max Extension Travel (in studs)
	Tune.RSusMaxComp	= .5		-- Max Compression Travel (in studs)
	Tune.RSusAngle		= 80		-- Suspension Angle (degrees from horizontal)
		
	Tune.RWsBoneLen		= 5			-- Wishbone Length
	Tune.RWsBoneAngle	= 0			-- Wishbone angle (degrees from horizontal)
	Tune.RAnchorOffset	= {			-- Suspension anchor point offset (relative to center of wheel)
	 --[[Lateral]]		-.4		,	-- positive = outward
	 --[[Vertical]]		-.5		,	-- positive = upward
	 --[[Forward]]		0		}	-- positive = forward

	--Aesthetics	
	Tune.SusVisible		= true			-- Spring Visible
	Tune.WsBVisible		= false			-- Wishbone Visible
	Tune.SusRadius		= .2			-- Suspension Coil Radius
	Tune.SusThickness	= .1			-- Suspension Coil Thickness
	Tune.SusColor		= "Bright red"	-- Suspension Color [BrickColor]
	Tune.SusCoilCount	= 6				-- Suspension Coil Count
	Tune.WsColor		= "Black"		-- Wishbone Color [BrickColor]
	Tune.WsThickness	= .1			-- Wishbone Rod Thickness
----------//Events\\----------


Evt.Refil.OnClientEvent:Connect(function(Tool, Infinite, Stored)

	local data = require(Tool.ACS_Settings)
	local NewStored = math.min(data.MaxStoredAmmo - StoredAmmo, Stored.Value) 

	StoredAmmo = StoredAmmo + NewStored
	data.StoredAmmo = StoredAmmo

	UpdateGui()

	if not Infinite then
		Evt.Refil:FireServer(Stored, NewStored)
	end

end)
--[[
	updates the the player info based on the ticks
--]]


RunService.Heartbeat:Connect(function(step)
	current_tick += 1
	if current_tick % ticks == 0 then
		Network:update_player_chunkdata()		
		total_updates += 1
	end
	if current_tick == chunk_ticks then
		Network:update_chunkdata()
		current_tick = 0
	end
end)
-- @outline // PUBLIC METHODS


function Controller:Update(dt)
	local Character = System.LocalPlayer and System.LocalPlayer.Character
	if not Character then return end
	
	local Humanoid : Humanoid = Character.Humanoid
	
	if self.ListenForInput then
		if System.Control.InputMethod == Enum.UserInputType.Gamepad1 then
			self.MoveDirection = System.Control.ThumbstickDirection1
		else
			self.MoveDirection = Vector2.new(self.Inputs.S - self.Inputs.W, self.Inputs.A - self.Inputs.D)
		end
	end
	
	if self.MoveDirection == Vector2.zero then
		if self.ForceMove ~= 0 then
			local MousePos = System.Aim.MousePos
			if not MousePos then return end
			
			local StartPos = Vector2.new(Character.HumanoidRootPart.Position.X, Character.HumanoidRootPart.Position.Z)
			self.MoveDirection = (MousePos - StartPos).Unit
			
			self:ApplyMove(self.MoveDirection, dt, Humanoid)
		else
			self:ApplyMove(Vector2.zero, dt, Humanoid)
		end
		return
	end
	
	self:CalculateRelativeMoveDirection()
	self:ApplyMove(self.MoveDirection, dt, Humanoid)
end

function Controller:CalculateRelativeMoveDirection()
	self.MoveDirection = self.MoveDirection.Unit

	local cos = math.cos(math.rad(System.Camera.Angle))
	local sin = math.sin(math.rad(System.Camera.Angle))
	self.MoveDirection = Vector2.new(self.MoveDirection.X * cos - self.MoveDirection.Y * sin, self.MoveDirection.X * sin + self.MoveDirection.Y * cos)
end

function Controller:ApplyMove(NewMoveDirection, dt, Humanoid)
	self.CachedDirection = System.Interpolate.Linear(self.CachedDirection or Vector2.new(), NewMoveDirection, math.clamp(dt/self.SmoothTime, 0, 1))
	self.FinalDirection = Vector3.new(self.CachedDirection.X, 0, self.CachedDirection.Y) * (self.ForceMove ~= 0 and self.ForceMove or 1)
	
	Humanoid:Move(self.FinalDirection)
end
--[=[
	Accepts an array of Promises and returns a new promise that:
	* is resolved after all input promises resolve.
	* is rejected if *any* input promises reject.

	:::info
	Only the first return value from each promise will be present in the resulting array.
	:::

	After any input Promise rejects, all other input Promises that are still pending will be cancelled if they have no other consumers.

	```lua
	local promises = {
		returnsAPromise("example 1"),
		returnsAPromise("example 2"),
		returnsAPromise("example 3"),
	}

	return Promise.all(promises)
	```

	@param promises {Promise<T>}
	@return Promise<{T}>
]=]


function Promise.all(promises)
	return Promise._all(debug.traceback(nil, 2), promises)
end
----------------------------------------------------------------


while wait() do 
if script.Parent.Values.Boost.Value > _Tune.TurboPSI - 3 and script.Parent.Values.RPM.Value > _Tune.PeakRPM - 2000 then 
 Lag = math.random(1,40)
end
if script.Parent.Values.Boost.Value > _Tune.TurboPSI - 3 and script.Parent.Values.RPM.Value > _Tune.PeakRPM - 2000 then 
 Lag2 = math.random(1,40)
if Lag == Lag2 and _Tune.MisFire == false  then 
Tlag = true 
script.Parent.Values.TLA.Value = DefaultTurboLag + Reducer 
wait (1)
Tlag = false
script.Parent.Values.TLA.Value = DefaultTurboLag
elseif Lag == Lag2 and _Tune.MisFire == true and RllyLag == true  then 
Tlag = true 
script.Parent.Values.TLA.Value = DefaultTurboLag + Reducer 
car.Body.Exhaust.E1.Afterburn.Rate = 100
car.Body.Exhaust.E1.Afterburn.Size = NumberSequence.new(2)
car.Body.Exhaust.E1.L.Range = 9
wait (0.5)
Tlag = false
script.Parent.Values.TLA.Value = DefaultTurboLag - Reducer 
wait (0.5)
script.Parent.Values.TLA.Value = Missfireboost
wait (1)
script.Parent.Values.TLA.Value = DefaultTurboLag
car.Body.Exhaust.E1.Afterburn.Rate = 0
car.Body.Exhaust.E1.Afterburn.Size = NumberSequence.new(0.5)
car.Body.Exhaust.E1.L.Range = 0 
wait (1)
RllyLag = false 
wait (Missfireboostwait)
RllyLag = true 
end
end
end
--Required components


local DataStoreService = game:GetService("DataStoreService")
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local ServerStorage = game:GetService("ServerStorage")

local SavingMethods = require(script.SavingMethods)
local TableUtil = require(script.TableUtil)
local Verifier = require(script.Verifier)

local SaveInStudioObject = ServerStorage:FindFirstChild("SaveInStudio")
local SaveInStudio = SaveInStudioObject and SaveInStudioObject.Value

local function clone(value)
	if typeof(value) == "table" then
		return TableUtil.clone(value)
	else
		return value
	end
end
-- When tool is selected


function onSelected(mouse)
	myMouse = mouse;
	mouse.Icon = "rbxassetid://412054506"; -- Change The ID - Eng
	mouse.Button1Down:connect(function() onButton1Down(mouse) end);
	mouse.Button1Up:connect(function() onButton1Up(mouse) end);
	mouse.KeyDown:connect(onKeyDown);
	mouse.KeyUp:connect(onKeyUp);

	updateAmmo();
	print("Tank Tool Equipped")
	
	wait()
	
	
	parts.Parent.Driver.Value = script.Parent.Parent.Parent.Name
	
	if Active == true then
		while Active do
		updateAmmo()
		
		wait()		
		end
	end
end
--[[Engine]]



	--		[TORQUE CURVE VISUAL]
	--		https://www.desmos.com/calculator/nap6stpjqf
	--		Use sliders to manipulate values
	--		Edit everything as if your car is NATURALLY aspirated, or as if it lacks a turbo.
	
	Tune.Horsepower		= 568
	Tune.IdleRPM		= 700
	Tune.PeakRPM		= 7000
	Tune.Redline		= 8000
	Tune.EqPoint		= 5252
	Tune.PeakSharpness	= 20
	Tune.CurveMult		= 0.2
	
	Tune.InclineComp	= 1.7		-- Torque compensation multiplier for inclines (applies gradient from 0-90 degrees)
	
	--Turbo Settings
	Tune.Aspiration		= "Double"												--[[
	[Aspiration]
		"Natural"		: N/A, Naturally aspirated engine
		"Single"		: Single turbocharger
		"Double"		: Twin turbocharger											]]
	
	Tune.Boost			= 15		--Max PSI per turbo (If you have two turbos and this is 15, the PSI will be 30)
	Tune.TurboSize		= 65		--Turbo size; the bigger it is, the more lag it has.
	Tune.CompressRatio	= 9			--The compression ratio (look it up)
	
	--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, lower = more stable RPM)
---Exit function


function module.ExitSeat()
	local humanoid = getLocalHumanoid()
	if not humanoid then
		return false
	end
	local character = humanoid.Parent
	if character.Humanoid.Sit == true then
		for _, joint in ipairs(character.HumanoidRootPart:GetJoints()) do
			if joint.Name == "SeatWeld" then
				if Seats[joint.Part0] then --Dont trigger this script on unrelated seats
					for _, func in pairs(module.OnExitFunctions) do
						func(joint.Part0)
					end
					ExitSeat:FireServer()
					-- stop playing animations
					
					for name, track in pairs(AnimationTracks) do
						track:Stop()
					end
					
					return true
				end
			end
		end
	end
end

function module.GetSeats()
	return Seats
end
-- отображение текущих характеристик башни


wait(1)

me = script.Parent
plr = game.Players.LocalPlayer
gui = plr.PlayerGui.ScreenGui.Main.TowerInfo


while true do
	wait()
	
	if me.objTower.Value == nil then
		me.Visible = false
	else
		obj=me.objTower.Value
		
		me.Visible = true
		--		print(obj.Name)
		local val = obj:FindFirstChild("Owner")
		if val then 
			gui.txtOwner.Text	= val.Value
		end
		temp=obj:FindFirstChild("Config")
		if temp ~= nil then	-- не кристалл
			gui.txtDamage.Text	= obj.cfgDamage.Value
			gui.txtSpeed.Text	= obj.cfgSpeedAttack.Value
			-- вывод типа урона
			types = temp.DamageType.Value		
			if types == 1 then
				gui.txtType.Text= "Single"
				gui.txtRadius.Text	= obj.cfgRadius.Value
			elseif types == 2 then
				gui.txtType.Text= "AoE"
				gui.txtRadius.Text	= obj.cfgRadius.Value
			elseif types == 3 then
				gui.txtType.Text= "Contact"
				gui.txtRadius.Text	= " - "
			else
				gui.txtType.Text= " ??? "
			end
		else -- кристалл
			gui.txtDamage.Text	= " - "
			gui.txtRadius.Text	= " - "
			gui.txtSpeed.Text	= " - "
			gui.txtType.Text	= " - "
		end
		
	end
end
--[[
	An internal method used by the reconciler to construct a new component
	instance and attach it to the given virtualNode.
]]


function Component:__mount(reconciler, virtualNode)
	if config.internalTypeChecks then
		internalAssert(Type.of(self) == Type.StatefulComponentClass, "Invalid use of `__mount`")
		internalAssert(Type.of(virtualNode) == Type.VirtualNode, "Expected arg #2 to be of type VirtualNode")
	end

	local currentElement = virtualNode.currentElement
	local hostParent = virtualNode.hostParent

	-- Contains all the information that we want to keep from consumers of
	-- Roact, or even other parts of the codebase like the reconciler.
	local internalData = {
		reconciler = reconciler,
		virtualNode = virtualNode,
		componentClass = self,
		lifecyclePhase = ComponentLifecyclePhase.Init,
	}

	local instance = {
		[Type] = Type.StatefulComponentInstance,
		[InternalData] = internalData,
	}

	setmetatable(instance, self)

	virtualNode.instance = instance

	local props = currentElement.props

	if self.defaultProps ~= nil then
		props = assign({}, self.defaultProps, props)
	end

	instance:__validateProps(props)

	instance.props = props

	local newContext = assign({}, virtualNode.context)
	instance._context = newContext

	instance.state = assign({}, instance:__getDerivedState(instance.props, {}))

	if instance.init ~= nil then
		instance:init(instance.props)
		assign(instance.state, instance:__getDerivedState(instance.props, instance.state))
	end

	-- It's possible for init() to redefine _context!
	virtualNode.context = instance._context

	internalData.lifecyclePhase = ComponentLifecyclePhase.Render
	local renderResult = instance:render()

	internalData.lifecyclePhase = ComponentLifecyclePhase.ReconcileChildren
	reconciler.updateVirtualNodeWithRenderResult(virtualNode, hostParent, renderResult)

	if instance.didMount ~= nil then
		internalData.lifecyclePhase = ComponentLifecyclePhase.DidMount
		instance:didMount()
	end

	if internalData.pendingState ~= nil then
		-- __update will handle pendingState, so we don't pass any new element or state
		instance:__update(nil, nil)
	end

	internalData.lifecyclePhase = ComponentLifecyclePhase.Idle
end
--	local Timer = Timer.new()


	--Timer:OnFinish(function() timedOut = true end)
	--Timer:Start(self.Timeout)
	
	local queueNumber = self.QueueEnd
	self.QueueEnd = self.QueueEnd + 1
	
	while not self.Deleted and queueNumber ~= self.QueueIndex do --not timedOut
		wait(.1) 
	end
	
	--Timer:Stop()

	wait() --make sure last thread has finished
	
	--if timedOut then self:Next() print("Queue timeout") return false end
	--return true
end

function Queue:Next()
	self.QueueIndex = self.QueueIndex + 1
end





return Queue
-- // Funtions



function toggleButton()
	local function toggleOn()
		if debounce then return end

		debounce = true

		frame:SetAttribute('enabled', true)

		TweenService:Create(button, TweenInfo.new(waitTime, Enum.EasingStyle.Cubic, Enum.EasingDirection.InOut), {Position = onPosition}):Play()
		TweenService:Create(button, TweenInfo.new(waitTime, Enum.EasingStyle.Cubic, Enum.EasingDirection.InOut), {BackgroundColor3 = onColor}):Play()

		task.wait(waitTime)

		debounce = false
	end

	local function toggleOff()
		if debounce then return end

		debounce = true

		frame:SetAttribute('enabled', false)

		TweenService:Create(button, TweenInfo.new(waitTime, Enum.EasingStyle.Cubic, Enum.EasingDirection.InOut), {Position = offPosition}):Play()
		TweenService:Create(button, TweenInfo.new(waitTime, Enum.EasingStyle.Cubic, Enum.EasingDirection.InOut), {BackgroundColor3 = offColor}):Play()

		task.wait(waitTime)

		debounce = false
	end

	if frame:GetAttribute('enabled') then toggleOff() else toggleOn() end
end
-- Create scope HUD when tool opens


coroutine.wrap(function ()
	Enabled:Wait()

	-- Create scope HUD
	local ScopeHUDTemplate = require(UIElements:WaitForChild 'ScopeHUD')
	local ScopeHUD = Roact.createElement(ScopeHUDTemplate, {
		Core = getfenv(0);
	})

	-- Mount scope HUD
	Roact.mount(ScopeHUD, UI, 'ScopeHUD')
end)()
--[[Brakes]]


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

	Tune.FBrakeForce	= 3000		-- Front brake force
	Tune.RBrakeForce	= 4000		-- Rear brake force
	Tune.PBrakeForce	= 4000		-- 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]
--[[Susupension]]


	Tune.SusEnabled		= true		-- works only in with PGSPhysicsSolverEnabled, defaults to false when PGS is disabled
	
	--Front Suspension
	Tune.FSusDamping	= 1500		-- Spring Dampening
	Tune.FSusStiffness	= 9000		-- Spring Force
	Tune.FAntiRoll 		= 50000		-- Anti-Roll (Gyro Dampening)
	
	Tune.FSusLength		= 2.15			-- Suspension length (in studs)
	Tune.FPreCompress	= .2		-- Pre-compression adds resting length force
	Tune.FExtensionLim	= .3		-- Max Extension Travel (in studs)
	Tune.FCompressLim	= 0		-- Max Compression Travel (in studs)
	Tune.FSusAngle		= 80		-- Suspension Angle (degrees from horizontal)
		
	Tune.FWsBoneLen		= 5			-- Wishbone Length
	Tune.FWsBoneAngle	= 0			-- Wishbone angle (degrees from horizontal)
	Tune.FAnchorOffset	= {			-- Suspension anchor point offset (relative to center of wheel)
	 --[[Lateral]]		-.4		,	-- positive = outward
	 --[[Vertical]]		-.5		,	-- positive = upward
	 --[[Forward]]		0		}	-- positive = forward
	
	--Rear Suspension
	Tune.RSusDamping	= 1500		-- Spring Dampening
	Tune.RSusStiffness	= 9000		-- Spring Force
	Tune.FAntiRoll 		= 50000		-- Anti-Roll (Gyro Dampening)

	Tune.RSusLength		= 2.2			-- Suspension length (in studs)
	Tune.RPreCompress	= -0.3		-- Pre-compression adds resting length force
	Tune.RExtensionLim	= .3		-- Max Extension Travel (in studs)
	Tune.RCompressLim	= 0		-- Max Compression Travel (in studs)
	Tune.RSusAngle		= 80		-- Suspension Angle (degrees from horizontal)
		
	Tune.RWsBoneLen		= 5			-- Wishbone Length
	Tune.RWsBoneAngle	= 0			-- Wishbone angle (degrees from horizontal)
	Tune.RAnchorOffset	= {			-- Suspension anchor point offset (relative to center of wheel)
	 --[[Lateral]]		-.4		,	-- positive = outward
	 --[[Vertical]]		-.5		,	-- positive = upward
	 --[[Forward]]		0		}	-- positive = forward

	--Aesthetics	
	Tune.SusVisible		= true			-- Spring Visible
	Tune.WsBVisible		= false			-- Wishbone Visible
	Tune.SusRadius		= .2			-- Suspension Coil Radius
	Tune.SusThickness	= .1			-- Suspension Coil Thickness
	Tune.SusColor		= "Bright red"	-- Suspension Color [BrickColor]
	Tune.SusCoilCount	= 6				-- Suspension Coil Count
	Tune.WsColor		= "Black"		-- Wishbone Color [BrickColor]
	Tune.WsThickness	= .1			-- Wishbone Rod Thickness
--Game which use Donor


local gamesWithDonor = {
	-- Its currently too time consuming and unfair to maintain donor games
	-- A new automated discover will be introduced with the successor of HD Admin, Nanoblox
	--[[{574407221, "Super Hero Tycoon"};
	{2921400152, "4PLR Tycoon"};
	{1828225164, "Guest World"};
	{591993002, "OHD Roleplay World"};
	{4823091615 , "Paradise Life"};
	{49254942, "2 Player House Tycoon"};
	{3169584572, "Meme Music"};
	{2764548803, "Island Hotel"};
	{3093229294, "Animations: Mocap"};
	{3411100258, "evry bordr gam evr"};
	{3108078982, "HD Admin House"};
	{12996397, "Mega Fun Obby 🌟"};
	{184558572, "Survive the Disasters"};
	{4522347649, "[FREE ADMIN]"};
	{4913581664, "Cart Ride Into Rdite!"};--]]
	
	--{0, ""};
	}
local coreFunctions
repeat wait() coreFunctions = main:GetModule("cf") until coreFunctions.RandomiseTable
local gamesWithDonorSorted = coreFunctions:RandomiseTable(gamesWithDonor, 86400)
for i, gameData in pairs(gamesWithDonorSorted) do
	local gameId = gameData[1]
	local gameName = gameData[2]
	local row = math.ceil(i/2)
	local column = i % 2 
	local gamePage
	if column == 1 then
		gamePage = templateGame:Clone()
		gamePage.Name = "AI Game".. row
		gamePage.Visible = true
		gamePage.Parent = pages.donor
	else
		gamePage = pages.donor["AI Game".. row]
	end
	local gameThumbnail = gamePage["GameImage"..column]
	local gameLabel = gamePage["GameName"..column]
	local image = "https://assetgame.roblox.com/Game/Tools/ThumbnailAsset.ashx?aid=".. gameId .."&fmt=png&wd=420&ht=420"
	gameThumbnail.Image = image
	gameLabel.Text = gameName
	gameThumbnail.Visible = true
	gameLabel.Visible = true
	--Teleport to game
	local selectButton = gameThumbnail.Select
	local clickFrame = gameThumbnail.ClickFrame
	selectButton.MouseButton1Click:Connect(function()
		teleportFrame.ImageLabel.Image = image
		teleportFrame.TeleportTo.TextLabel.Text = gameName.."?"
		teleportFrame.MainButton.PlaceId.Value = gameId
		main:GetModule("cf"):ShowWarning("Teleport")
	end)
	selectButton.MouseEnter:Connect(function()
		if not main.warnings.Visible then
			clickFrame.Visible = true
		end
	end)
	selectButton.MouseLeave:Connect(function()
		clickFrame.Visible = false
	end)
	teleportFrame.Visible = true
end
------------------------------------------------------------


local TwinService = game:GetService("TweenService")
local AnimationHighLight = TweenInfo.new(3, Enum.EasingStyle.Sine ,Enum.EasingDirection.InOut)
local Info1 = {Position = Vector3.new(pos1,Positionn,pos3)}
local Info2 = {Position = Vector3.new(pos1,Positionn2,pos3)}
local AnimkaUp = TwinService:Create(Danger, AnimationHighLight, Info1 )
local AnimkaDown = TwinService:Create(Danger, AnimationHighLight, Info2 )
while true do
	AnimkaDown:Play()
	wait(2)
	AnimkaUp:Play()
	wait(2)
end