Pinkstack/roblox-luau-corpus-text huggingface dataset:
-- Critically damped spring class for fluid motion effects


local Spring = {} do
	Spring.__index = Spring

	-- Initialize to a given undamped frequency and default position
	function Spring.new(freq, pos)
		return setmetatable({
			freq = freq,
			goal = pos,
			pos = pos,
			vel = 0,
		}, Spring)
	end

	-- Advance the spring simulation by `dt` seconds
	function Spring:step(dt: number)
		local f: number = self.freq::number * 2.0 * math.pi
		local g: Vector3 = self.goal
		local p0: Vector3 = self.pos
		local v0: Vector3 = self.vel

		local offset = p0 - g
		local decay = math.exp(-f*dt)

		local p1 = (offset*(1 + f*dt) + v0*dt)*decay + g
		local v1 = (v0*(1 - f*dt) - offset*(f*f*dt))*decay

		self.pos = p1
		self.vel = v1

		return p1
	end
end

CameraUtils.Spring = Spring
-- palys anim


function module.play1(anim,hum, data)
	local animFold = data.Fold or rp.Storage.Animations
	local speed = data.sped or nil
	
	local animation = hum.Animator:LoadAnimation(animFold[anim])
	animation:Play()
	
	if speed ~= nil then
		animation:AdjustSpeed(speed)
	end
end
--[[Flip]]



	function Flip()
		--Detect Orientation
		if (car.DriveSeat.CFrame*CFrame.Angles(math.pi/2,0,0)).lookVector.y > .1 or FlipDB then
			FlipWait=tick()
			
		--Apply Flip
		else
			if tick()-FlipWait>=3 then
				FlipDB=true
				local gyro = car.DriveSeat.Flip
				gyro.maxTorque = Vector3.new(10000,0,10000)
				gyro.P=3000
				gyro.D=500
				wait(1)
				gyro.maxTorque = Vector3.new(0,0,0)
				gyro.P=0
				gyro.D=0
				FlipDB=false
			end
		end
	end

	function AWD()
		if car.DriveSeat.AWD.Value then -- SET AWD
			if _Tune.Config == "FWD" or _Tune.Config == "AWD" then for i,v in pairs(car.Wheels:GetChildren()) do if v.Name=="RL" or v.Name=="RR" or v.Name=="R" then table.insert(Drive,v) end end end
		else --make FWD
			if _Tune.Config == "FWD" or _Tune.Config == "AWD" then for i,v in pairs(car.Wheels:GetChildren()) do if v.Name=="RL" or v.Name=="RR" or v.Name=="R" then table.remove(Drive,3) table.remove(Drive,4) end end end
		end
	end
	
	car.DriveSeat.AWD.Changed:connect(function()
		AWD()
	end)
	
	AWD()
--Handle door opening effects


function GetLength(t)
	local l = 0
	for i,v in pairs(t) do
		l=l+1
	end
	return l
end

script.GetInStart.OnServerEvent:Connect(function(Player,Seat)
	if Seat:FindFirstChild("DoorHinge") then --This bit only serves a purpose if there are doors to open/close
		print("Found door hinge, opening door")
		if Seat.DoorHinge.ClassName ~= "HingeConstraint" then warn("Warning, door hinge is not actually a hinge!") end
		if SeatsInteractingPlayers[Seat] == nil then
			SeatsInteractingPlayers[Seat] = {} --This index is removed when the seat is destroyed by the seat add code
		end
		--Record that a player is trying to get in the seat
		SeatsInteractingPlayers[Seat][Player] = elapsedTime()
		--Activate the hinge
		Seat.DoorHinge.TargetAngle = 55
		--If the player doesnt stop trying to get in after 3 seconds, they probably left or it broke.
		wait(3)
		print("Check for automatic close")
		if Player.Parent ~= nil then --Player is still here, check they havent interacted again. 
			print("Player still here")
			if SeatsInteractingPlayers[Seat][Player] then
				print("Time since last interaction: "..tostring(elapsedTime() -  SeatsInteractingPlayers[Seat][Player]))
				if (elapsedTime() - SeatsInteractingPlayers[Seat][Player]) >=3 then --Check they havent started interacting again within 8 seconds
					SeatsInteractingPlayers[Seat][Player] = nil
					print("removing player")
				end
			end
		else
			SeatsInteractingPlayers[Seat][Player] = nil
		end
		print("Number of interacting players: "..tostring(GetLength(SeatsInteractingPlayers[Seat])))
		--Check if the door should be closed
		if GetLength(SeatsInteractingPlayers[Seat]) == 0 then
			Seat.DoorHinge.TargetAngle = 0
		end
	end
end)

script.GetInEnd.OnServerEvent:Connect(function(Player,Seat)
	if Seat:FindFirstChild("DoorHinge") then 
		if SeatsInteractingPlayers[Seat] then
			SeatsInteractingPlayers[Seat][Player] = nil
			--Check nobody is still trying to get in before closing
			if GetLength(SeatsInteractingPlayers[Seat]) == 0 then
				Seat.DoorHinge.TargetAngle = 0
			end
		end
	end
end)


return module
-------- OMG HAX



r = game:service("RunService")


local damage = 10


local slash_damage = 20
local lunge_damage = 40

sword = script.Parent.Handle
Tool = script.Parent


local SlashSound = Instance.new("Sound")
SlashSound.SoundId = "rbxasset://sounds\\swordslash.wav"
SlashSound.Parent = sword
SlashSound.Volume = .7

local LungeSound = Instance.new("Sound")
LungeSound.SoundId = "rbxasset://sounds\\swordlunge.wav"
LungeSound.Parent = sword
LungeSound.Volume = .6

local UnsheathSound = Instance.new("Sound")
UnsheathSound.SoundId = "rbxasset://sounds\\unsheath.wav"
UnsheathSound.Parent = sword
UnsheathSound.Volume = 1






function blow(hit)
	local humanoid = hit.Parent:findFirstChild("Humanoid")
	local vCharacter = Tool.Parent
	local vPlayer = game.Players:playerFromCharacter(vCharacter)
	local hum = vCharacter:findFirstChild("Humanoid") -- non-nil if tool held by a character
	if humanoid~=nil and humanoid ~= hum and hum ~= nil then
		-- final check, make sure sword is in-hand

		local right_arm = vCharacter:FindFirstChild("Right Arm")
		if (right_arm ~= nil) then
			local joint = right_arm:FindFirstChild("RightGrip")
			if (joint ~= nil and (joint.Part0 == sword or joint.Part1 == sword)) then
				tagHumanoid(humanoid, vPlayer)
				humanoid:TakeDamage(damage)

			end
		end


	end
end



function tagHumanoid(humanoid, player)
	local creator_tag = Instance.new("ObjectValue")
	creator_tag.Value = player
	creator_tag.Name = "creator"
	creator_tag.Parent = humanoid
	game.Debris:AddItem(creator_tag, 1)
end



function attack()
	damage = slash_damage
	SlashSound:play()
	local anim = Instance.new("StringValue")
	anim.Name = "toolanim"
	anim.Value = "Slash"
	anim.Parent = Tool
end

function lunge()
	damage = lunge_damage

	LungeSound:play()

	local anim = Instance.new("StringValue")
	anim.Name = "toolanim"
	anim.Value = "Lunge"
	anim.Parent = Tool
	
	
	local force = Instance.new("BodyVelocity")
	force.velocity =  Vector3.new(0,80,0) 
	force.Parent = Tool.Parent.Torso
	wait(.25)
	force.velocity =  (Tool.Parent.Torso.CFrame.lookVector * 120)  + Vector3.new(0, 60,0)
	swordOut()
	wait(.5)
	force.Parent = nil
	wait(.5)
	swordUp()

	damage = slash_damage
end

function swordUp()
	Tool.GripForward = Vector3.new(-1,0,0)
	Tool.GripRight = Vector3.new(0,1,0)
	Tool.GripUp = Vector3.new(0,0,1)
end

function swordOut()
	Tool.GripForward = Vector3.new(0,0,1)
	Tool.GripRight = Vector3.new(0,-1,0)
	Tool.GripUp = Vector3.new(-1,0,0)
end

function swordAcross()
	-- parry
end


Tool.Enabled = true
local last_attack = 0
function onActivated()

	if not Tool.Enabled then
		return
	end

	Tool.Enabled = false

	local character = Tool.Parent;
	local humanoid = character.Humanoid
	if humanoid == nil then
		print("Humanoid not found")
		return 
	end

	t = r.Stepped:wait()

	if (t - last_attack < .2) then
		lunge()
	else
		attack()
	end

	last_attack = t

	--wait(.5)

	Tool.Enabled = true
end


function onEquipped()
	UnsheathSound:play()
end


script.Parent.Activated:connect(onActivated)
script.Parent.Equipped:connect(onEquipped)


connection = sword.Touched:connect(blow)
--[[

	remoteProperty = ClientRemoteProperty.new(valueObject: Instance)

	remoteProperty:Get(): any
	remoteProperty:Destroy(): void

	remoteProperty.Changed(newValue: any): Connection

--]]




local IS_SERVER = game:GetService("RunService"):IsServer()
local Signal = require(script.Parent.Parent.Signal)

local ClientRemoteProperty = {}
ClientRemoteProperty.__index = ClientRemoteProperty


function ClientRemoteProperty.new(object)

	assert(not IS_SERVER, "ClientRemoteProperty can only be created on the client")

	local self = setmetatable({
		_object = object;
		_value = nil;
		_isTable = object:IsA("RemoteEvent");
	}, ClientRemoteProperty)

	local function SetValue(v)
		self._value = v
	end

	if self._isTable then
		self.Changed = Signal.new()
		self._change = object.OnClientEvent:Connect(function(tbl)
			SetValue(tbl)
			self.Changed:Fire(tbl)
		end)
		SetValue(object.TableRequest:InvokeServer())
	else
		SetValue(object.Value)
		self.Changed = object.Changed
		self._change = object.Changed:Connect(SetValue)
	end

	return self

end


function ClientRemoteProperty:Get()
	return self._value
end


function ClientRemoteProperty:Destroy()
	self._change:Disconnect()
	if self._isTable then
		self.Changed:Destroy()
	end
end


return ClientRemoteProperty
--[[Engine]]


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


ToolEvent.OnServerEvent:Connect(function(Player, ToolName, Components)
	local ToolModuleObject = script:FindFirstChild(ToolName)
	
	if ToolModuleObject then
		local ToolModule = require(ToolModuleObject)
		
		coroutine.wrap(function()
			ToolModule:ActivateModule(Player, Components)

		end)()	
	end
end)
-- Ring5 ascending


for l = 1,#lifts5 do
	if (lifts5[l].className == "Part") then
	lifts5[l].BodyPosition.position = Vector3.new((lifts5[l].BodyPosition.position.x),(lifts5[l].BodyPosition.position.y+8),(lifts5[l].BodyPosition.position.z))
	end
end
wait(0.1)
for p = 1,#parts5 do
	parts5[p].CanCollide = true
end
wait(0.5)
--///////////////////////// Constructors
--//////////////////////////////////////



function module.new()
	local obj = setmetatable({}, methods)

	obj.ObjectPool = moduleObjectPool.new(OBJECT_POOL_SIZE)
	obj.MessageCreators = GetMessageCreators()
	obj.DefaultCreatorType = messageCreatorUtil.DEFAULT_MESSAGE_CREATOR

	messageCreatorUtil:RegisterObjectPool(obj.ObjectPool)

	return obj
end

function module:GetStringTextBounds(text, font, textSize, sizeBounds)
	return messageCreatorUtil:GetStringTextBounds(text, font, textSize, sizeBounds)
end

return module
------------------------------------



function onTouched(part)
	if part.Parent ~= nil then
	local h = part.Parent:findFirstChild("Humanoid")
		if h~=nil then
			local teleportfrom=script.Parent.Enabled.Value
			if teleportfrom~=0 then
				if h==humanoid then
				return
				end
				local teleportto=script.Parent.Parent:findFirstChild(modelname)
				if teleportto~=nil then
					local torso = h.Parent.UpperTorso
					local location = {teleportto.Position}
					local i = 1

					local x = location[i].x
					local y = location[i].y
					local z = location[i].z
				
					x = x + math.random(-1, 1)
					z = z + math.random(-1, 1)
					y = y + math.random(2, 3)

					local cf = torso.CFrame
					local lx = 0
					local ly = y
					local lz = 0
					
					script.Parent.Enabled.Value=0
					teleportto.Enabled.Value=0
					torso.CFrame = CFrame.new(Vector3.new(x,y,z), Vector3.new(lx,ly,lz))
					wait(3)
					script.Parent.Enabled.Value=1
					teleportto.Enabled.Value=1
				else
					print("Could not find teleporter!")
				end
			end
		end
	end
end

script.Parent.Touched:connect(onTouched)
--
-- THESE ARE THE CORE SETTINGS
-- YOU WILL NOT BE ABLE TO CHANGE THEM IN-GAME


local Settings={
								--[[
Style Options
�������������					]]
Flat=false;						-- Enables Flat theme / Disables Aero theme
ForcedColor=false;				-- Forces everyone to have set color & transparency
Color=Color3.new(0,0,0);		-- Changes the Color of the user interface
ColorTransparency=.75;			-- Changes the Transparency of the user interface
Chat=false;						-- Enables the custom chat
BubbleChat=false;				-- Enables the custom bubble chat
								--[[
Basic Settings
��������������					]]
AdminCredit=true;				-- Enables the credit GUI for that appears in the bottom right
AutoClean=false;				-- Enables automatic cleaning of hats & tools in the Workspace
AutoCleanDelay=60;				-- The delay between each AutoClean routine
CommandBar=true;				-- Enables the Command Bar | GLOBAL KEYBIND: \
FunCommands=true;				-- Enables fun yet unnecessary commands
FreeAdmin=false;				-- Set to 1-5 to grant admin powers to all, otherwise set to false
PublicLogs=false;				-- Allows all users to see the command & chat logs
Prefix=':';						-- Character to begin a command
								--[[
Admin Powers
������������
0			Player
1			VIP					Can use nonabusive commands only on self
2			Moderator			Can kick, mute, & use most commands
3			Administrator		Can ban, crash, & set Moderators/VIP
4			SuperAdmin			Can grant permanent powers, & shutdown the game
5			Owner				Can set SuperAdmins, & use all the commands
6			Game Creator		Can set owners & use all the commands

Group & VIP Admin
�����������������
			You can set multiple Groups & Ranks to grant users admin powers
GroupAdmin={
[12345]={[254]=4,[253]=3};
[GROUPID]={[RANK]=ADMINPOWER}
};
			You can set multiple Assets to grant users admin powers
VIPAdmin={
[12345]=3;
[54321]=4;
[ITEMID]=ADMINPOWER;
};								]]

GroupAdmin={

};

VIPAdmin={

};

								--[[
Permissions
�����������
-- You can set the admin power required to use a command
-- COMMANDNAME=ADMINPOWER;		]]

Permissions={

};

}

return {Settings,{Owners,SuperAdmins,Admins,Mods,VIP,Banned}}
--// Recoil Settings	


	gunrecoil = -0.3; -- How much the gun recoils backwards when not aiming
	camrecoil = 0.6; -- How much the camera flicks when not aiming
	AimGunRecoil = -0.3; -- How much the gun recoils backwards when aiming
	AimCamRecoil = 0.5; -- How much the camera flicks when aiming
	
	CamShake = 2; -- THIS IS NEW!!!! CONTROLS CAMERA SHAKE WHEN FIRING
	AimCamShake = 3; -- THIS IS ALSO NEW!!!!
	
	Kickback = 0.2; -- Upward gun rotation when not aiming
	AimKickback = 0.1; -- Upward gun rotation when aiming
--Weld stuff here




car.DriveSeat.ChildAdded:connect(function(child)
	if child.Name=="SeatWeld" and child:IsA("Weld") and game:GetService("Players"):GetPlayerFromCharacter(child.Part1.Parent)~=nil then
		child.C0=CFrame.new(0,-.5,0)*CFrame.fromEulerAnglesXYZ(-(math.pi/2),0,0)*CFrame.Angles(math.rad(13),0,0)
	end
end)
-- Functions.


local function ResizeBar(percent)
	if screenVisible then
		inside:TweenSize(UDim2.new(percent, 0, 1, 0), Enum.EasingDirection.Out, Enum.EasingStyle.Linear)
	end
end

local function hideLoadingScreen()
	if screenVisible then
		screenVisible = false
		ResizeBar(1)
		task.wait(1)
		clonedLoadingScreen.Frame:TweenPosition(UDim2.new(0,0,-1.5,0),Enum.EasingDirection.InOut,Enum.EasingStyle.Quad, 1)
		clonedLoadingScreen:Destroy()
		game:GetService("StarterGui"):SetCoreGuiEnabled(Enum.CoreGuiType.All, true)
		game:GetService("TextChatService"):WaitForChild("ChatWindowConfiguration").Enabled = true
		game:GetService("TextChatService"):WaitForChild("ChatInputBarConfiguration").Enabled = true
		
		game:GetService("StarterGui"):SetCoreGuiEnabled(Enum.CoreGuiType.Backpack, false)
	end
end

coroutine.wrap(function()
	wait(hideAfter)
	ResizeBar(1)
	task.wait(1)
	hideLoadingScreen()
end)()
--TheNexusAvenger
--Runs the client-side rocket launcher.



local Tool = script.Parent
local Handle = Tool:WaitForChild("Handle")
local EquipSound = Handle:WaitForChild("EquipSound")
local ReloadSound = Handle:WaitForChild("ReloadSound")

local Resources = require(script.Parent:WaitForChild("Resources"))
local InputHandler = require(Resources:GetResource("InputHandler"))
local AnimationPlayer = require(Resources:GetResource("AnimationPlayer"))
local BufferCreator = require(Resources:GetResource("BufferCreator"))
local RemoteEventCreator = require(Resources:GetResource("RemoteEventCreator"))
local Configuration = require(Resources:GetResource("Configuration"))

local IGNORE_LIST = Configuration.IGNORE_LIST
local ROCKET_RELOAD_WAIT_TO_SHOW_TIME = Configuration.ROCKET_RELOAD_WAIT_TO_SHOW_TIME
local ROCKET_RELOAD_VISIBLE_TIME = Configuration.ROCKET_RELOAD_VISIBLE_TIME
local ROCKET_LAUNCH_SPEED = Configuration.ROCKET_LAUNCH_SPEED

local RocketBuffer = BufferCreator:CreateClientBuffer("RocketBuffer")
local FireRocketEvent = RemoteEventCreator:GetRemoteEvent("FireRocket")

local LocalEquipSound,LocalReloadSound
local CurrentAnimation,CurrentHandRocket
local CurrentMouse
local Equipped = false
local EquipVolume,ReloadVolume = EquipSound.Volume,ReloadSound.Volume
local LastReloadTime = 0
--just put this script under the tool and when weilded the left arm will go up aswell.


tool=script.Parent
while true do
	if tool.Parent.Parent.Name=="Workspace" then
		local la=tool.Parent:FindFirstChild("Left Arm")
		local ra=tool.Parent:FindFirstChild("Left Arm")
		local ts=tool.Parent:FindFirstChild("Torso")
		if la~=nil and ts~=nil and ra~=nil then
			local ls=ts:FindFirstChild("Left Shoulder")
			local rs=ts:FindFirstChild("Right Shoulder")
			if ls~=nil and rs~=nil then
				ls.CurrentAngle=rs.CurrentAngle*-1
				ls.MaxVelocity=0
			end
		end
	end
wait(.02)  --If arm looks glitchy, then make this number smaller. And avoid setting to 0(game will crash).
end
------------------------------------------------------------------------
--
-- * used in luaK:reserveregs(), (lparser) luaY:forlist()
------------------------------------------------------------------------


function luaK:checkstack(fs, n)
  local newstack = fs.freereg + n
  if newstack > fs.f.maxstacksize then
    if newstack >= self.MAXSTACK then
      luaX:syntaxerror(fs.ls, "function or expression too complex")
    end
    fs.f.maxstacksize = newstack
  end
end
--DevVince was here. :o


local banto = script.Parent
local origin = banto.PrimaryPart.CFrame
local tether = 100
local bg = banto.PrimaryPart:WaitForChild'BodyGyro'
local bp = banto.PrimaryPart:WaitForChild'BodyPosition'
bp.Position = origin.p
bg.CFrame = banto.PrimaryPart.CFrame
local hipHeight = 2.25
---------------------------------------------------------------


function onChildAdded(child)
	if child.Name == "SeatWeld" then
		local human = child.part1.Parent:findFirstChild("Humanoid") 
		if (human ~= nil) then
			print("Human IN")
			seat.SirenControl.CarName.Value = human.Parent.Name.."'s Car"
			seat.Parent.Name = human.Parent.Name.."'s Car"
			seat.SirenControl.Vehicle.Value = script.Parent.Parent
			s.Parent.SirenControl:clone().Parent = game.Players:findFirstChild(human.Parent.Name).PlayerGui
		end
	end
end

function onChildRemoved(child)
	if (child.Name == "SeatWeld") then	
		local human = child.part1.Parent:findFirstChild("Humanoid") 
		if (human ~= nil) then
			print("Human OUT")
			game.Players:findFirstChild(human.Parent.Name).PlayerGui.SirenControl:remove()
		end
	end
end


script.Parent.ChildAdded:connect(onChildAdded)
script.Parent.ChildRemoved:connect(onChildRemoved)
-- Moves the object around a little to indicate it's similar to an item pickup.


local TweenService = game:GetService("TweenService")

local part = script.parent
local startPosition = part.Position  

part.Anchored = true

local hoverTweenInfo = TweenInfo.new(
	1, -- Time
	Enum.EasingStyle.Sine, -- EasingStyle
	Enum.EasingDirection.InOut, -- EasingDirection
	-1, -- RepeatCount (when less than zero the tween will loop indefinitely)
	true, -- Reverses (tween will reverse once reaching it's goal)
	0 -- DelayTime
)

local tween = TweenService:Create(part, hoverTweenInfo, {Position = startPosition + Vector3.new(0, 0.5, 0)})

tween:Play()
--Electric Curve



local EHP=_Tune.E_Horsepower/100
local ETQ=_Tune.E_Torque/100
local ETrans1=_Tune.E_Trans1/1000
local ETrans2=_Tune.E_Trans2/1000
local ELimit=_Tune.E_Redline/1000 

function elecHP(RPM)
	RPM=RPM/1000
	local retVal=1e-9
	if RPM<=ETrans1 then
		retVal=((((RPM/ETrans1)^_Tune.EH_FrontMult)/(1/EHP))*(RPM/ETrans1))+((((RPM/ETrans1)^(1/_Tune.EH_FrontMult))/(1/EHP))*(1-(RPM/ETrans1)))
	elseif ETrans1<RPM and RPM<ETrans2 then
		retVal=EHP
	elseif ETrans2<=RPM then
		retVal=EHP-(((RPM-ETrans2)/(ELimit-ETrans2))^_Tune.EH_EndMult)/(1/(EHP*(_Tune.EH_EndPercent/100)))
	else
		error( "\n\t [AC6C]: Drive initialization failed!"
			.."\n\t    An unknown error occured when initializing electric horsepower."
			.."\n\t    Please send a screenshot of this message to Avxnturador."
			.."\n\t    R: "..RPM..", T1: "..ETrans1", T2: "..ETrans2", L: "..ELimit".")
	end
	return retVal
end

function elecTQ(RPM)
	RPM=RPM/1000
	local retVal=1e-9
	if RPM<ETrans1 then
		retVal=ETQ
	elseif ETrans1<=RPM then
		retVal=ETQ-(((RPM-ETrans1)/(ELimit-ETrans1))^_Tune.ET_EndMult)/(1/(ETQ*(_Tune.ET_EndPercent/100)))
	else
		error( "\n\t [AC6C]: Drive initialization failed!"
			.."\n\t    An unknown error occured when initializing electric torque."
			.."\n\t    Please send a screenshot of this message to Avxnturador."
			.."\n\t    R: "..RPM..", T1: "..ETrans1", T2: "..ETrans2", L: "..ELimit".")
	end
	return retVal
end
--// 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 gui = client.UI.Prepare(script.Parent.Parent)
	local label = gui.LABEL
	local str = data.Message
	local topbar = client.UI.Get("TopBar")

	client.UI.Remove("Notif",script.Parent.Parent)

	local log  = {
		Type = "Notif";
		Title = "Notif";
		Message = str;
		Icon = "rbxassetid://7501175708";
		Time = os.date("%X");
		Function = nil;
	}

	table.insert(client.Variables.CommunicationsHistory, log)
	service.Events.CommsCenter:Fire(log)


	if str and type(str)=="string" then
		label.Text = str
		label.Position = UDim2.new(0, 0, 0, ((topbar and 40) or 0) - 35)
		gTable:Ready()
	else
		gui:Destroy()
	end
end
--credit to miked--


miked=script.Parent

itlh=miked.Torso:findFirstChild("Left Hip")
itlh.Part0=miked.Torso
itlh.Part1=miked:findFirstChild("Left Leg")
itlh.C0=CFrame.new(-1, -1, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)

itrh=miked.Torso:findFirstChild("Right Hip")
itrh.Part0=miked.Torso
itrh.Part1=miked:findFirstChild("Right Leg")
itrh.C0=CFrame.new(1, -1, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0)

itls=miked.Torso:findFirstChild("Left Shoulder")
itls.Part1=miked.Torso
itls.C0=CFrame.new(2, 0.5, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
itls.Part0=miked:findFirstChild("Left Arm")

itrs=miked.Torso:findFirstChild("Right Shoulder")
itrs.Part1=miked.Torso
itrs.C0=CFrame.new(-2, 0.5, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0)
itrs.Part0=miked:findFirstChild("Right Arm")

miked.Head:makeJoints()
--[[
	Returns the farm model in workspace belonging to a player with a user ID
	matching the given ownerId. This is based on the OwnerId attribute of farm
	models, which gets set by the server when the farm is loaded for a player.
--]]



local ReplicatedStorage = game:GetService("ReplicatedStorage")
local FarmConstants = require(ReplicatedStorage.Source.Farm.FarmConstants)
local Attribute = require(ReplicatedStorage.Source.SharedConstants.Attribute)
local Sift = require(ReplicatedStorage.Dependencies.Sift)

local function getFarmModelFromOwnerId(ownerId: number): Model?
	local farms = Sift.Array.filter(FarmConstants.FarmContainer:GetChildren(), function(instance: Instance)
		return instance:GetAttribute(Attribute.OwnerId) == ownerId
	end)

	-- At most, only one farm will exist matching the ownerId, so it's safe to grab the first list item
	local farm = farms[1]
	if farm then
		assert(farm:IsA("Model"), "Farm is not a Model")
		return farm
	end

	return nil
end

return getFarmModelFromOwnerId
--[[
	Calls a callback on `done` with specific arguments.
]]


function Promise.prototype:doneCall(callback, ...)
	assert(type(callback) == "function", string.format(ERROR_NON_FUNCTION, "Promise:doneCall"))
	local length, values = pack(...)
	return self:_finally(debug.traceback(nil, 2), function()
		return callback(unpack(values, 1, length))
	end, true)
end