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


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

	Tune.FBrakeForce	= 2500		-- Front brake force
	Tune.RBrakeForce	= 1500		-- Rear brake force
	Tune.PBrakeForce	= 10000		-- 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]
--[[
	
	Returns true if value exists in array.
	
	Functions.SearchArray(
		array,					<-- |REQ| 	Array to search through
		search,					<-- |REQ| 	Search value
	)
	
--]]





return function(array, search)
	if not array then
		return
	end
	--- Scan array
	for _, value in ipairs(array) do
		if value == search then
			--- Matching value!
			return true
		end
	end

	--- No matching value
	return false
end
-- Mains


TeleportationDoorEvent.OnClientEvent:Connect(function() -- When Client fires, this will response
	for i = 1,10 do
		Frame.BackgroundTransparency -= 0.1
		wait(0.01) -- 0.01 more faster fade or 0.1 slow fade
	end
	wait(TeleportTime)
	for i = 1,10 do
		Frame.BackgroundTransparency += 0.1
		wait(0.01)
	end
end) -- End
-- if no tagged children, display everything


if #raycastParams.FilterDescendantsInstances==0 then
	raycastParams:AddToFilter(workspace)
end

local terrain=workspace.Terrain

local function castRay(currentPosition,rayDirection)
	local result = workspace:Raycast(currentPosition,rayDirection,raycastParams)
	local color
	if result then
		if result.Instance==terrain then
			if result.Material==Enum.Material.Water then
				color=terrain.WaterColor
			else
				color=terrain:GetMaterialColor(result.Material)
			end
		else
			color=result.Instance.Color
		end
	else
		color=Color3.new()
	end
	return color
end

local actor = script:GetActor()
local connection = actor:BindToMessageParallel("Invoke", function(mapName,xEndIndex,zStartIndex,zEndIndex,startPosition,stepZ,stepX,rayDirection)
	local result1,result2,currentPosition,color1,color2
	local colors = table.create(xEndIndex)
	local strings = table.create(zEndIndex-zStartIndex+1)
	local diagonalStep=(stepX+stepZ)*0.5

	for i = zStartIndex,zEndIndex do
		currentPosition=startPosition+i*stepZ
		for j = 1,xEndIndex do
			-- cast two rays close to each other and pick the darkest one
			local color=castRay(currentPosition,rayDirection)
			local color2=castRay(currentPosition+(stepZ+stepX)*0.5,rayDirection)
			if color2.G<color.G then
				color=color2
			end
			colors[j]=string.char(math.floor(math.min(color.R*4,3))*16+
				math.floor(math.min(color.G*4,3))*4+
				math.floor(math.min(color.B*4,3))+32)
			currentPosition+=stepX
			-- chop the work into small pieces to reduce server load
			if j%5==0 then
				task.wait()
			end
		end
		table.insert(strings,table.concat(colors))
	end
	task.synchronize()
	local mapFolder=ReplicatedStorage.MiniMap[mapName]
	for i=zStartIndex,zEndIndex do
		local stringInstance=Instance.new("StringValue")
		stringInstance.Name=tostring(i)
		stringInstance.Value=strings[i-zStartIndex+1]
		stringInstance.Parent=mapFolder
	end
end)
-- deviation START: Roblox renderer doesn't support TextNode, only use of this type is in this file
-- export type ReactText = string | number;
-- deviation END


export type ReactProvider<T> = {
	["$$typeof"]: number,
	type: ReactProviderType<T>,
	key: nil | string,
	ref: nil,
	props: {
		value: T,
		children: ReactNodeList?,
		-- deviation START: only make this open to extension if absolutely necessary
		-- ...
		-- deviation END
	},
	-- deviation START: only make this open to extension if absolutely necessary
	-- ...
	-- deviation END
}

export type ReactProviderType<T> = {
	["$$typeof"]: number,
	_context: ReactContext<T>,
	-- deviation START: only make this open to extension if absolutely necessary
	-- ...
	-- deviation END
}

export type ReactConsumer<T> = {
	["$$typeof"]: number,
	type: ReactContext<T>, -- FIXME: Luau can't do <T> because:  Recursive type being used with different parameters
	key: nil | string,
	ref: nil,
	props: {
		children: (value: T) -> ReactNodeList,
		unstable_observedBits: number?,
		-- deviation START: only make this open to extension if absolutely necessary
		-- ...
		-- deviation END
	},
	-- deviation START: only make this open to extension if absolutely necessary
	-- ...
	-- deviation END
}

export type ReactContext<T> = {
	["$$typeof"]: number,
	Consumer: ReactContext<T>,
	Provider: ReactProviderType<T>,
	_calculateChangedBits: ((T, T) -> number)?,
	_currentValue: T,
	_currentValue2: T,
	_threadCount: number,
	-- DEV only
	_currentRenderer: Object | nil,
	_currentRenderer2: Object | nil,
	-- This value may be added by application code
	-- to improve DEV tooling display names
	displayName: string?,
	-- deviation START: only make this open to extension if absolutely necessary
	-- ...
	-- deviation END
}

export type ReactPortal = {
	["$$typeof"]: number,
	key: nil | string,
	containerInfo: any,
	children: ReactNodeList,
	-- TODO: figure out the API for cross-renderer implementation.
	implementation: any,
	-- deviation START: only make this open to extension if absolutely necessary
	-- ...
	-- deviation END
}

export type RefObject = { current: any }
--- BOOM!



local c = colors[math.random(1,#colors)]

for j=1,20 do

	local p = Instance.new("Part")
	p.Size = Vector3.new(1,1,1)
	--p.Transparency = 1
	p.Reflectance = 1
	p.Position = shell.Position + ( Vector3.new(math.random() - .5, math.random() - .5, math.random() - .5) * 10)
	p.Velocity =  shell.Velocity -- + (Vector3.new(math.random() - .5, math.random() - .5, math.random() - .5) * 20)

	
	local s = Instance.new("Sparkles")
	s.Color = c
	s.Parent = p

	local f = Instance.new("BodyForce")
	f.force = Vector3.new(0,98,0)
	f.Parent = p

	p.Parent = game.Workspace


	local debris = game:GetService("Debris")
	debris:AddItem(p, 5)

end

local sound = Instance.new("Sound")
	sound.SoundId = "rbxasset://sounds\\Rocket shot.wav"
	sound.Parent = script.Parent
	sound.Volume = 1
	sound:play()

local e = Instance.new("Explosion")
e.BlastRadius = 0
e.BlastPressure = 0
e.Position = shell.Position
-- Implements Javascript's `Map.prototype.forEach` as defined below
-- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/forEach


function Set:forEach(callback: setCallbackFn<any> | setCallbackFnWithThisArg<any>, thisArg: Object?): ()
	if typeof(callback) ~= "function" then
		error("callback is not a function")
	end

	-- note: we can't turn this into a simple for-in loop, because the callbacks can modify the table and React, GQL, and Jest rely on JS behavior in that scenario
	arrayForEach(self._array, function(value)
		if thisArg ~= nil then
			(callback :: setCallbackFnWithThisArg<any>)(thisArg, value, value, self)
		else
			(callback :: setCallbackFn<any>)(value, value, self)
		end
	end)
end

function Set:has(value): boolean
	return self._map[value] ~= nil
end

function Set:ipairs()
	if __DEV__ then
		warn(
			debug.traceback(
				"`for _,_ in mySet:ipairs() do` is deprecated and will be removed in a future release, please use `for _,_ in mySet do` instead\n",
				2
			)
		)
	end
	return ipairs(self._array)
end

return Set
--// All global vars will be wiped/replaced except script



return function(data, env)
	if env then
		setfenv(1, env)
	end
	local playergui = service.PlayerGui
	local localplayer = service.Players.LocalPlayer

	local frame = script.Parent.Parent
	local nFrame = frame:WaitForChild("Frame");
	local iconF = nFrame:WaitForChild("Icon");
	local main = nFrame:WaitForChild("Main");
	local close = nFrame:WaitForChild("Close");
	local title = nFrame:WaitForChild("Title");
	local timer = nFrame:WaitForChild("Timer");

	local gTable = data.gTable
	local clickfunc = data.OnClick
	local closefunc = data.OnClose
	local ignorefunc = data.OnIgnore

	local name = data.Title
	local text = data.Message or data.Text or ""
	local time = data.Time
	local icon = data.Icon or client.MatIcons.Info

	local returner = nil

	if clickfunc and type(clickfunc)=="string" then
		clickfunc = client.Core.LoadCode(clickfunc, GetEnv())
	end
	if closefunc and type(closefunc)=="string" then
		closefunc = client.Core.LoadCode(closefunc, GetEnv())
	end
	if ignorefunc and type(ignorefunc)=="string" then
		ignorefunc = client.Core.LoadCode(ignorefunc, GetEnv())
	end

	local holder = client.UI.Get("NotificationHolder",nil,true)

	if not holder then
		client.UI.Make("NotificationHolder")
		holder = client.UI.Get("NotificationHolder",nil,true)
		holder.Object.ScrollingFrame.Active = false
	end

	holder = holder.Object.ScrollingFrame
	title.Text = name
	main.Text = text
	iconF.Image = icon

	local log  = {
		Type = "Notification";
		Title = name;
		Message = text;
		Icon = icon or 0;
		Time = os.date("%X");
		Function = clickfunc;
	}

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

	main.MouseButton1Click:Connect(function()
		if frame and frame.Parent then
			if clickfunc then
				clickfunc()
			end
			frame:Destroy()
		end
	end)

	close.MouseButton1Click:Connect(function()
		if frame and frame.Parent then
			if closefunc then
				closefunc()
			end
			gTable:Destroy()
		end
	end)

	frame.Parent = holder

	task.spawn(function()
		local sound = Instance.new("Sound",service.LocalContainer())
		sound.SoundId = 'rbxassetid://203785584'--client.NotificationSound
		sound.Volume = 0.2
		sound:Play()
		wait(0.5)
		sound:Destroy()
	end)

	if time then
		timer.Visible = true
		repeat
			timer.Text = time
			wait(1)
			time = time-1
		until time<=0 or not frame or not frame.Parent

		if frame and frame.Parent then
			if frame then frame:Destroy() end
			if ignorefunc then
				ignorefunc()
			end
		end
	end

	return returner
end
--[[
		___      _______                _     
	   / _ |____/ ___/ /  ___ ____ ___ (_)__ 
	  / __ /___/ /__/ _ \/ _ `(_-<(_-</ (_-<
	 /_/ |_|   \___/_//_/\_,_/___/___/_/___/
 						SecondLogic @ Inspare
]]




local autoscaling	= false					--Estimates top speed

local UNITS	= {								--Click on speed to change units
											--First unit is default	
	{
		units			= "MPH"				,
		scaling			= (10/12) * (60/88)	, -- 1 stud : 10 inches | ft/s to MPH
		maxSpeed		= 250				,
		spInc			= 20				, -- Increment between labelled notches
	},
	
	{
		units			= "KM/H"			,
		scaling			= (10/12) * 1.09728	, -- 1 stud : 10 inches | ft/s to KP/H
		maxSpeed		= 240				,
		spInc			= 20				, -- Increment between labelled notches
	},
	
	{
		units			= "SPS"				,
		scaling			= 1					, -- Roblox standard
		maxSpeed		= 300				,
		spInc			= 60				, -- Increment between labelled notches
	}
}
--[[Transmission]]


	Tune.Clutch			= true		-- Implements a realistic clutch, change to "false" for the chassis to act like AC6.81T.

	Tune.TransModes		= {"Auto","Semi","Manual"}												--[[
	[Modes]
		"Auto"		: Automatic shifting
		"Semi"		: Clutchless manual shifting, dual clutch transmission
		"Manual"	: Manual shifting with clutch
		
		>Include within brackets
			eg: {"Semi"} or {"Auto", "Manual"}								
	>First mode is default mode													]]
	
	Tune.ClutchMode		= "New"												--[[
	[Modes]
		"New"		: Speed controls clutch engagement			(AC6C V1.2)
		"Old"		: Speed and RPM control clutch engagement	(AC6C V1.1)		]]
	
	--Transmission Settings
	Tune.Stall			= true		-- Stalling, enables the car to stall. An ignition plugin would be necessary. Disables if Tune.Clutch is false.
	Tune.ClutchRel		= false		-- If true, the driver must let off the gas before shifting to a higher gear. Recommended false for beginners.
	Tune.ClutchEngage	= 25		-- How fast engagement is (0 = instant, 99 = super slow)	
	Tune.SpeedEngage 	= 15		-- Speed the clutch fully engages at (Based on SPS) 
	
	--Clutch: "Old" mode
	Tune.ClutchRPMMult	= 1.0		-- Clutch RPM multiplier, recommended to leave at 1.0
	
	--Automatic Settings
	Tune.AutoShiftMode	= "Speed"												--[[
	[Modes]
		"Speed"		: Shifts based on wheel speed
		"RPM"		: Shifts based on RPM										]]	
	Tune.AutoShiftType	= "Rev"												--[[
	[Types]
		"Rev"		: Clutch engages fully once RPM reached			(AC6C V1)
		"DCT"		: Clutch engages after a set time has passed	(AC6.81T)	]]
	Tune.AutoShiftVers	= "New"												--[[
	[Versions]
		"New"		: Shift from Reverse, Neutral, and Drive		(AC6.81T)
		"Old"		: Auto shifts into R or D when stopped.			(AC6.52S2)	]]
	Tune.AutoUpThresh	= -200		-- Automatic upshift point 	(relative to peak RPM, positive = Over-rev)
	Tune.AutoDownThresh = 1400		-- Automatic downshift point (relative to peak RPM, positive = Under-rev)
	
	--Automatic: Revmatching
	Tune.ShiftThrot		= 100		-- Throttle level when shifting down to revmatch, 0 - 100%
	
	--Automatic: DCT
	Tune.ShiftUpTime	= 0.25		-- Time required to shift into next gear, from a lower gear to a higher one.
	Tune.ShiftDnTime	= 0.125		-- Time required to shift into next gear, from a higher gear to a lower one.
	
	--Gear Ratios
	
	Tune.FinalDrive		= 4
	Tune.Ratios			= {
		--[[Reverse]]	5			,
		--[[Neutral]]	0			,
		--[[ 1 ]]		3.9			,
		--[[ 2 ]]		2.52		,
		--[[ 3 ]]		1.85		,
		--[[ 4 ]]		1.38		,
		--[[ 5 ]]		1.05		,
		--[[ 6 ]]		.87			,
		--[[ 7 ]]		.845		,
	}
	Tune.FDMult			= 1			-- Ratio multiplier (keep this at 1 if car is not struggling with torque)
------------------------------------------------------------------------
-- count separators ("=") in a long string delimiter
-- * used by luaX:read_long_string
------------------------------------------------------------------------


function luaX:skip_sep(ls)
  local count = 0
  local s = ls.current
  -- lua_assert(s == "[" or s == "]")
  self:save_and_next(ls)
  while ls.current == "=" do
    self:save_and_next(ls)
    count = count + 1
  end
  return (ls.current == s) and count or (-count) - 1
end
--[[Wheel Alignment]]


	--[Don't physically apply alignment to wheels]
	--[Values are in degrees]
	Tune.FCamber		= 0
	Tune.RCamber		= 0
	Tune.FCaster		= 0
	Tune.RCaster		= 0	--Will only work with 4WS enabled (Avxnturador)
	Tune.FToe			= 0	
	Tune.RToe			= 0
--[=[
	Disconnects all connections from a ScriptSignal object without making it unusable.

	```lua
	local connection = ScriptSignal:Connect(function() end)

	connection.Connected -> true
	ScriptSignal:DisconnectAll()
	connection.Connected -> false
	```

	@ignore
]=]


function ScriptSignal:DisconnectAll()
    local node: ScriptConnectionNode? = self._head
    while node ~= nil do
        local _connection = node._connection

        if _connection ~= nil then
            _connection.Connected = false
            _connection._node = nil
            node._connection = nil
        end

        node = node._next
    end

    self._head = nil
end
-- 3D TextGen



This = script.Parent
Btn = This.Parent
Lift = Btn.Parent.Parent.Parent
Config = require(Lift.CustomLabel)
Characters = require(script.Characters)

CustomLabel = Config["CUSTOMFLOORLABEL"][tonumber(Btn.Name)]

function ChangeFloor(SF)
	if string.len(SF) == 1 then
		SetLabel(1,SF,-0.04)	
		SetLabel(2,"NIL",0)
	else
		SetLabel(1,SF:sub(1,1),0)	
		SetLabel(2,SF:sub(2,2),0)
	end
end


function SetLabel(ID,CHAR,OFFSET)
	if This:FindFirstChild("L"..ID) and Characters[CHAR] ~= nil then
		This["L"..ID].Mesh.Offset = Vector3.new(OFFSET, 0, 0)
		for i,l in pairs(Characters[CHAR]) do 
			This["L"..ID].Mesh.MeshId = "rbxassetid://"..l
		end
		This["L"..ID].Mesh.Scale = Vector3.new(0.006, 0.008, 0.019)
	end
end


if CustomLabel then
	ChangeFloor(CustomLabel)
else
	ChangeFloor(Btn.Name)
end

script:Destroy()
---- ARITHMETIC ----



function ActiveCastStatic:AddVelocity(velocity: Vector3)
	assert(getmetatable(self) == ActiveCastStatic, ERR_NOT_INSTANCE:format("AddVelocity", "ActiveCast.new(...)"))
	assert(self.StateInfo.UpdateConnection ~= nil, ERR_OBJECT_DISPOSED)
	self:SetVelocity(self:GetVelocity() + velocity)
end

function ActiveCastStatic:AddAcceleration(acceleration: Vector3)
	assert(getmetatable(self) == ActiveCastStatic, ERR_NOT_INSTANCE:format("AddAcceleration", "ActiveCast.new(...)"))
	assert(self.StateInfo.UpdateConnection ~= nil, ERR_OBJECT_DISPOSED)
	self:SetAcceleration(self:GetAcceleration() + acceleration)
end

function ActiveCastStatic:AddPosition(position: Vector3)
	assert(getmetatable(self) == ActiveCastStatic, ERR_NOT_INSTANCE:format("AddPosition", "ActiveCast.new(...)"))
	assert(self.StateInfo.UpdateConnection ~= nil, ERR_OBJECT_DISPOSED)
	self:SetPosition(self:GetPosition() + position)
end

function ActiveCastStatic:DbgVisualizeSegment(castStartCFrame: CFrame, castLength: number): ConeHandleAdornment?
	return DbgVisualizeSegment(castStartCFrame, castLength)
end

function ActiveCastStatic:DbgVisualizeHit(atCF: CFrame, wasPenetrated: boolean): SphereHandleAdornment?
	return DbgVisualizeHit(atCF, wasPenetrated)
end
---Place this INSIDE the model. Don't replace the model name or anything.
------------------------------------------------------------------------------------------ 


object = script.Parent 
if (object ~= nil) and (object ~= game.Workspace) then 
model = object 

backup = model:clone() -- Make the backup 
waitTime = 65 --Time to wait between regenerations 
wait(math.random(0, waitTime)) 
while true do 
wait(waitTime) -- Regen wait time 

model:remove() 

wait(2.5) -- Display regen message for this amount of time 

model = backup:clone() 
model.Parent = game.Workspace 
model:makeJoints() 
message.Parent = nil 
end 
end
--ASIAN REEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE



function weldlol()
	local counts = {}
	local function scan(parent, topart)
		for _,v in pairs(parent:GetDescendants()) do
			if (v:IsA("BasePart")) then
				local weld = Instance.new("WeldConstraint")
				weld.Parent = v
				weld.Part0 = topart
				weld.Part1 = v
				v.Anchored = false
				table.insert(counts,v)
			end
			scan(v)
		end
	end
	scan(script.Parent.LightsPart, script.Parent.HPart)
	scan(script.Parent.LightsPart2, script.Parent.HPart2)
	for _,v in pairs(counts) do
	end
end

weldlol()
--CODE RUN


local t = 0
timeNeeded = 0

UpdatePositions()

local AnimatingBind = game["Run Service"].Stepped:Connect(function(totalTime, step)
	
	t = t + (step * origin.Speed.Value)
	local alpha
	if timeNeeded == 0 then
		alpha = 1
	else
		alpha = math.min(1, t / math.max(.001,timeNeeded))
	end
	 
	
	for limb, position in pairs(desiredPositions) do
		limb.Transform = lastPositions[limb]:lerp(desiredPositions[limb], alpha)
		if alpha == 1 then
			lastPositions[limb] = desiredPositions[limb]
		end
	end
	
	if alpha == 1 then
		KFNumber = KFNumber + 1
		if KFNumber > maxKFNumber then
			if KeyframeAnimation.Loop then
				--ResetJoints()
				KFNumber = 1
			else
				ResetJoints()
				script:Destroy()
			end
		end
		
		UpdatePositions()
		t = 0
	end
	
end)
--[=[
	@function Rotate
	@within ColourUtils

	@param colour Color3 -- The colour to rotate.
	@param angle number -- The angle to rotate by.
	@return Color3 -- The rotated colour.
]=]


return function(colour: Color3, angle: number): Color3
	assertTypeOf("colour", "Color3", colour)
	assertTypeOf("angle", "number", angle)

	local hue, sat, val = colour:ToHSV()
	local newHue = clamp((hue + (angle / 360)) % 1, 0, 1)

	local newColour = Color3.fromHSV(newHue, sat, val)

	return clampColour(newColour)
end
-- drag


do
	local delta, old_mouse_position = UDim2.fromOffset(0, 0), nil

	user_input_service.InputBegan:Connect(function(input, processing)
		if (in_container and (not drag_connection or not drag_connection.Connected) and not processing and input.UserInputType == Enum.UserInputType.MouseButton1) then
			old_mouse_position = UDim2.fromOffset(mouse.X, mouse.Y)

			drag_connection = run_service.RenderStepped:Connect(function()
				delta = old_mouse_position - UDim2.fromOffset(mouse.X, mouse.Y)

				container.Position = container.Position - delta
				old_mouse_position = UDim2.fromOffset(mouse.X, mouse.Y)
			end)
		end
	end)

	user_input_service.InputEnded:Connect(function(input)
		if (drag_connection and drag_connection.Connected and input.UserInputType == Enum.UserInputType.MouseButton1) then
			drag_connection:Disconnect()
		end
	end)
end
-- Used to initialize new barrierPartInfos


local function getBarrierPartInfo(part, startDeg, endDeg, splitLevel, isSecondPartInPair, isSecondPartBySplitLevel)
	local barrierPartInfo = {}
	barrierPartInfo.part = part
	barrierPartInfo.startDeg = startDeg
	barrierPartInfo.endDeg = endDeg
	barrierPartInfo.splitLevel = splitLevel -- increases by 1 each time the part is split
	barrierPartInfo.isSecondPartBySplitLevel = {}  -- will hold bool values for whether itself and its ancestors were second parts in pairs
	for i = 1, splitLevel - 1 do
		barrierPartInfo.isSecondPartBySplitLevel[i] = isSecondPartBySplitLevel[i]
	end
	barrierPartInfo.isSecondPartBySplitLevel[splitLevel] = isSecondPartInPair
	return barrierPartInfo
end

local function getVertexListFromRadians(startRad, endRad, stormRadius, stormPos)
	local x1 = stormRadius * math.cos(startRad)
	local z1 = stormRadius * math.sin(startRad)
	local x2 = stormRadius * math.cos(endRad)
	local z2 = stormRadius * math.sin(endRad)
	local vertexList = { stormPos + Vector3.new(x1, 0, z1), -- bot1
						 stormPos + Vector3.new(x1, BARRIER_HEIGHT, z1), -- top1
						 stormPos + Vector3.new(x2, BARRIER_HEIGHT, z2), -- top2
						 stormPos + Vector3.new(x2, 0, z2) } -- bot2
	return vertexList
end
--------------------------------------------------------------------------------------------------------------------------------------


function PressL(key)				
	if (key== "l") then
if (Activate==false) then
game.Players.LocalPlayer.Character.Helm.LS.Light.Enabled=true
game.Players.LocalPlayer.Character.Helm.Flashlight.Material = "Neon"
game.Players.LocalPlayer.Character.Helm.Flashlight.BrickColor = BrickColor.new("Brick yellow")
Activate = true
elseif (Activate==true) then
	
game.Players.LocalPlayer.Character.Helm.LS.Light.Enabled=false	
game.Players.LocalPlayer.Character.Helm.Flashlight.Material = "SmoothPlastic"
game.Players.LocalPlayer.Character.Helm.Flashlight.BrickColor = BrickColor.new("Black")
	Activate=false
		end
	end
end
Mouse.KeyDown:connect(PressL)
--Main function


local function AttachAuraControl(source_part, eff_cont) --(source_part, effect_container)
	
	local AnimObj
	
	local function Start()
		AnimObj = {}
		AnimObj["MainPart"] = EFFECT_LIB.NewInvisiblePart()
		
		AnimObj["Emitter"] = script.Hearties:clone()
		AnimObj["Emitter"].Parent = AnimObj["MainPart"]
		
		AnimObj["MainPart"].Parent = eff_cont
	end
	
	local function Update()
		AnimObj["MainPart"].CFrame = source_part:GetRenderCFrame() * CFrame.new(0, 1.5, 0)
	end
	
	local function Stop()
		eff_cont:ClearAllChildren()
		AnimObj = nil
	end
	
	return {Start = Start, Update = Update, Stop = Stop}
end

return AttachAuraControl