Roblox/luau_corpus huggingface dataset:
-- update loop

game:GetService("RunService").Heartbeat:Connect(function(dt)
	BP.Position = lookAt(target.Position);
	local set = springPart.Position;
	neck.C0 = neckC0 * CFrame.fromEulerAnglesYXZ(set.z*0.5, set.x, 0);
	waist.C0 = waistC0 * CFrame.fromEulerAnglesYXZ(set.z*0.5, set.y, 0);
end);
--Weld stuff here
MakeWeld(car.Misc.Wheel.A,car.TruckSeat,"Motor",.5).Name="W"
ModelWeld(car.Misc.Wheel.Parts,car.Misc.Wheel.A)



car.TruckSeat.ChildAdded:connect(function(child)
	if child.Name=="SeatWeld" and child:IsA("Weld") and game.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)
--[[**
	ensures value is either nil or passes check

	@param check The check to use

	@returns A function that will return true iff the condition is passed
**--]]
function t.optional(check)
	assert(t.callback(check))
	return function(value)
		if value == nil then
			return true
		end

		local success, errMsg = check(value)
		if success then
			return true
		else
			return false, string.format("(optional) %s", errMsg or "")
		end
	end
end
-- FUNCTIONS
function Tracker.getCombinedTotalVolumes()
	local combinedVolume = 0
	for tracker, _ in pairs(trackers) do
		combinedVolume += tracker.totalVolume
	end
	return combinedVolume
end

function Tracker.getCharacterSize(character)
	local head = character and character:FindFirstChild("Head")
	local hrp = character and character:FindFirstChild("HumanoidRootPart")
	if not(hrp and head) then return nil end
	if not head:IsA("BasePart") then
		head = hrp
	end
	local headY = head.Size.Y
	local hrpSize = hrp.Size
	local charSize = (hrpSize * Vector3.new(2, 2, 1)) + Vector3.new(0, headY, 0)
	local charCFrame = hrp.CFrame * CFrame.new(0, headY/2 - hrpSize.Y/2, 0)
	return charSize, charCFrame
end
---------------
--// Preset Variables
---------------
local Players = game.Players
local Lighting = game.Lighting
local ReplicatedStorage = game.ReplicatedStorage
local RemoteEvents = ReplicatedStorage.RemoteEvents
local RepAssets = ReplicatedStorage.RepAssets
local TweenService = game:GetService("TweenService")
local LocalPlayer = Players.LocalPlayer
local PlayerGui = LocalPlayer.PlayerGui
local Character = LocalPlayer.Character
local Camera = workspace.CurrentCamera
local Mouse = LocalPlayer:GetMouse()
local UIS = game:GetService("UserInputService")
local STC = RemoteEvents.STC --// [STC] Receive
local CTS = RemoteEvents.CTS --// [CTS] Send
--										if human.Health <= 0 then
--											torso.Velocity = (torso.Position - position).unit * 10;
--											print("Dead");
--										end
										
										print("Took "..(100-(distance-radius)*(100/radius)).." Damage")
									end
								end
--	local dir = pos.CFrame.lookVector
--	local pos1 = pos.Position + (dir * 6)
--	rocket.CFrame = CFrame.new(pos1,  pos1 + dir)
	scr.Disabled= false
	rocket.Parent = game.Workspace
	
	-- т.е. дальше он живёт сам по себе	
end

return module
--- Active
script.Parent.OnServerEvent:Connect(function(Player)
	local Projectile = game.ReplicatedStorage.TripleYoru.TriplSlash.FXG:Clone()
	local BV = Instance.new("BodyVelocity",Projectile)
	BV.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
	BV.Velocity = Player.Character.HumanoidRootPart.CFrame.LookVector * 0
	Projectile.Parent = workspace
	Projectile.CanCollide = false
	Projectile.Anchored = false
	Projectile.CFrame = Player.Character.HumanoidRootPart.CFrame * CFrame.new(0,-2,0) * CFrame.fromEulerAnglesXYZ(0,5.5,0)
	Projectile.Touched:Connect(function(hit)
	if hit.Parent:FindFirstChild("Humanoid") and hit.Parent.Name ~= Player.Name and hit.Parent:WaitForChild("Humanoid") ~= nil and hit.Parent:WaitForChild("Humanoid").Health ~= 0 and not hit.Parent:FindFirstChild("AlreadyHit") then
			local Check = Instance.new("IntValue", hit.Parent)
				Check.Name = "AlreadyHit"
				game.Debris:AddItem(Check ,1)
			local VCharacter = game.Workspace:FindFirstChild(Player.Name)
	        local vPlayer = game.Players:GetPlayerFromCharacter(VCharacter)
	        local Humanoid = hit.Parent:WaitForChild("Humanoid")
			Humanoid:TakeDamage(100)
			tagHumanoid(hit.Parent:FindFirstChild("Humanoid"),vPlayer)
			wait(0.05)
			untagHumanoid(hit.Parent:FindFirstChild("Humanoid"))	
		end
	end)
	wait(2.9)
	BV:Destroy()
	Projectile.Transparency = 1
	Projectile.Anchored = false
	wait(0.2)
	Projectile.CanCollide = false
	wait(0.25)
	for i = 0,5 do
		wait(0.025)
		Projectile.Transparency = Projectile.Transparency + 1
		Projectile.Texture1.Transparency = Projectile.Texture1.Transparency + 1
		Projectile.Texture2.Transparency = Projectile.Texture2.Transparency + 1
	end
	Projectile:Destroy()
end)
-- Colors
local themeColor = ContainerGui:GetAttribute("ThemeColor")

FormFrame.BackgroundColor3 = themeColor:Lerp(Colors.White, 0.75)
ScrollingFrame.ScrollBarImageColor3 = themeColor:Lerp(Colors.White, 0.25)
--------------| MODIFY COMMANDS |--------------
SetCommandRankByName = {
	--["jump"] = "VIP";
};	
SetCommandRankByTag = {
	--["abusive"] = "Admin";
};








};
-- note: JS version can return anything that's truthy, but that won't work for us since Lua deviates (0 is truthy)
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
--		print(animName .. " * " .. idx .. " [" .. origRoll .. "]")
		local anim = animTable[animName][idx].anim

		if (toolAnimInstance ~= anim) then
			
			if (toolAnimTrack ~= nil) then
				toolAnimTrack:Stop()
				toolAnimTrack:Destroy()
				transitionTime = 0
			end
					
			-- load it to the humanoid; get AnimationTrack
			toolAnimTrack = Figure.AnimationController:LoadAnimation(anim)
			 
			-- play the animation
			toolAnimTrack:Play(transitionTime)
			toolAnimName = animName
			toolAnimInstance = anim

			currentToolAnimKeyframeHandler = toolAnimTrack.KeyframeReached:connect(toolKeyFrameReachedFunc)
		end
end

function stopToolAnimations()
	local oldAnim = toolAnimName

	if (currentToolAnimKeyframeHandler ~= nil) then
		currentToolAnimKeyframeHandler:disconnect()
	end

	toolAnimName = ""
	toolAnimInstance = nil
	if (toolAnimTrack ~= nil) then
		toolAnimTrack:Stop()
		toolAnimTrack:Destroy()
		toolAnimTrack = nil
	end


	return oldAnim
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.027)	
		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.004, 0)
		for i,l in pairs(Characters[CHAR]) do 
			This["L"..ID].Mesh.MeshId = "rbxassetid://"..l
		end
		if CHAR == "M" or CHAR == "W" then
			This["L"..ID].Mesh.Scale = Vector3.new(0.004, 0.001, 0.005)
		else
			This["L"..ID].Mesh.Scale = Vector3.new(0.005, 0.001, 0.005)
		end
	end
end


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

script:Destroy()
--[=[
	Use to test that the bottom padding between the given GuiObject or Rect and the other GuiObject or Rect.

	The last argument is optional. If nil, the matcher will pass only if the difference **bottom** edge of the given GuiObject or Rect and the **bottom** edge of the other GuiObject or Rect is zero or positive.

	```lua
	-- Jest
	expect(instanceA).toBeInsideAbove(instanceB)
	expect(instanceA).toBeInsideAbove(instanceB, 10)
	expect(instanceA).toBeInsideAbove(instanceB, NumberRange.new(0, 10))
	```

	```lua
	-- TestEZ
	expect(instanceA).to.be.insideAbove(instanceB)
	expect(instanceA).to.be.insideAbove(instanceB, 10)
	expect(instanceA).to.be.insideAbove(instanceB, NumberRange.new(0, 10))
	```

	@tag inside
	@within CollisionMatchers2D
]=]
local function insideAbove(a: GuiObject | Rect, b: GuiObject | Rect, distance: number | NumberRange)
	local aRect = toRect(a)
	local bRect = toRect(b)

	local distanceFromSide = -(aRect.Max - bRect.Max)
	if distance then
		if typeof(distance) == "number" then
			distance = NumberRange.new(distance)
		end

		return returnValue(
			distance.Min <= distanceFromSide.Y and distance.Max >= distanceFromSide.Y,
			"Was within range",
			"Was not within range ( " .. tostring(distance) .. ")"
		)
	else
		return returnValue(distanceFromSide.Y >= 0, "Was not below the element", "Was too far below the element")
	end
end

return insideAbove
--[ FUNCTION ]-

function updateMusic()
	local id = string.gsub(music.SoundId, "rbxassetid://", "")
	local success, info = pcall(mps.GetProductInfo, mps, id)
	if success then
		Frame:TweenPosition(UDim2.new(0.288, 0, 0.026, 0),"Out","Quad",.5,true) -- changing it to in
		script.Parent.Text = "Now Playing : " .. info.Name -- changing name

		wait(5) -- wait to close it

		Frame:TweenPosition(UDim2.new(0.288, 0,-1, 0),"In","Quad",.5,true) -- changing it to in
	end
end


updateMusic()


music:GetPropertyChangedSignal("SoundId"):Connect(updateMusic)
--------------------
--| Script Logic |--
--------------------

SwooshSound:Play()

Rocket.Touched:Connect(OnTouched)
--[[
	Calls awaitStatus internally, returns (isResolved, values...)
]]
function Promise.prototype:await()
	return awaitHelper(self:awaitStatus())
end

local function expectHelper(status, ...)
	if status ~= Promise.Status.Resolved then
		error((...) == nil and "Expected Promise rejected with no value." or (...), 3)
	end

	return ...
end
-- ROBLOX TODO: Object here is a stand-in for Map and Set, use those when we extract type-only files
return function<T, U>(value: string | Array<T> | Object, mapFn: (mapFn<T, U> | mapFnWithThisArg<T, U>)?, thisArg: Object?): Array<U>
	if not Set then
		Set = (require(LuauPolyfill).Set :: any)
	end

	if not Map then
		Map = (require(LuauPolyfill).Map :: any)
	end

	if value == nil then
		error("cannot create array from a nil value")
	end
	local valueType = typeof(value)

	local array = {}

	if valueType == "table" and isArray(value) then
		if mapFn then
			for i = 1, #(value :: Array<T>) do
				if thisArg ~= nil then
					array[i] = (mapFn :: mapFnWithThisArg<T, U>)(thisArg, (value :: Array<T>)[i], i)
				else
					array[i] = (mapFn :: mapFn<T, U>)((value :: Array<T>)[i], i)
				end
			end
		else
			for i = 1, #(value :: Array<T>) do
				array[i] = (value :: Array<any>)[i]
			end
		end
	elseif instanceof(value, Set) then
		if mapFn then
			for i, v in (value :: any):ipairs() do
				if thisArg ~= nil then
					array[i] = (mapFn :: mapFnWithThisArg<T, U>)(thisArg, v, i)
				else
					array[i] = (mapFn :: mapFn<T, U>)(v, i)
				end
			end
		else
			for i, v in (value :: any):ipairs() do
				array[i] = v
			end
		end
	elseif instanceof(value, Map) then
		if mapFn then
			for i, v in (value :: any):ipairs() do
				if thisArg ~= nil then
					array[i] = (mapFn :: mapFnWithThisArg<T, U>)(thisArg, v, i)
				else
					array[i] = (mapFn :: mapFn<T, U>)(v, i)
				end
			end
		else
			for i, v in (value :: any):ipairs() do
				array[i] = v
			end
		end
	elseif valueType == "string" then
		if mapFn then
			for i = 1, (value :: string):len() do
				if thisArg ~= nil then
					array[i] = (mapFn :: mapFnWithThisArg<T, U>)(thisArg, (value :: any):sub(i, i), i)
				else
					array[i] = (mapFn :: mapFn<T, U>)((value :: any):sub(i, i), i)
				end
			end
		else
			for i = 1, (value :: string):len() do
				array[i] = (value :: any):sub(i, i)
			end
		end
	end

	return array
end
-- Saves profile card information for next time
Players.PlayerRemoving:Connect(function(player)
	local statusSuccess, statusError = pcall(function()
		Statuses:SetAsync(player.UserId, player:GetAttribute("status"))
	end)
	if statusSuccess then
		print("Status successfully updated!")
	else
		print(player, statusError)
	end
end)
-- Probably a bit unorthodox, but hey, it works

DefaultX = 1304
Causes = 534

local Change = script.Parent.Parent
local LastChange = tick()

function Size()
	repeat wait() until Change.Parent.AbsoluteSize.X ~= 0
	LastChange = tick()
	local ResolutionX = Change.Parent.AbsoluteSize.X
	local x = ResolutionX / DefaultX
	local z = x * Causes
	local y = z / Causes

	local Percentage = Change.AbsoluteSize.X / ResolutionX
	script.Parent.Scale = y
end

Change.Changed:connect(function()
	if tick() - LastChange > 0.1 then
		Size()
	end
end)

Size()
--Main function
local function AttachAuraControl(source_part, eff_cont) --(source_part, effect_container)

	local function Start()

	end
	
	local function Update()

	end
	
	local function Stop()

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

return AttachAuraControl
-- -- -- -- -- -- --
--DIRECTION SCROLL--
-- -- -- -- -- -- --
This.Floor.Position = UDim2.new(0.25,0,0,0)
This.Direction.Text = ">"
wait(0.25)
This.Direction.Text = "->"
wait(0.25)
This.Direction.Text = "-->"
wait(0.25)
This.Direction.Text = "<"
wait(0.25)
This.Direction.Text = "<-"
wait(0.25)
This.Direction.Text = "<--"
wait(0.25)
This.Direction.Text = "SYSTEM READY"
wait(5)
This.Floor.Position = UDim2.new(0.125,0,0,0)
This.Direction.Text = ""
while wait() do
	if Lift:WaitForChild("Direction").Value ~= 0 then 
		if Lift:WaitForChild("Velocity").Value == 0 then
			if Lift:WaitForChild("Direction").Value == 1 then
				This.Floor.Position = UDim2.new(0.25,0,0,0)
				This.Direction.Text = "-->"
			else
				This.Floor.Position = UDim2.new(0.25,0,0,0)
				This.Direction.Text = "<--"
			end
		elseif Lift:WaitForChild("Velocity").Value ~= 0 then
			if Lift:WaitForChild("Direction").Value == 1 then
				This.Floor.Position = UDim2.new(0.25,0,0,0)
				This.Direction.Text = ">"
				wait(0.25)
				This.Direction.Text = "->"
				wait(0.25)
				This.Direction.Text = "-->"
				wait(0.25)
			else
				This.Floor.Position = UDim2.new(0.25,0,0,0)
				This.Direction.Text = "<"
				wait(0.25)
				This.Direction.Text = "<-"
				wait(0.25)
				This.Direction.Text = "<--"
				wait(0.25)
			end
		end
	else
		This.Floor.Position = UDim2.new(0.125,0,0,0)
		This.Direction.Text = ""
	end
end
--[[Initialize]]

	script.Parent:WaitForChild("A-Chassis Interface")
	script.Parent:WaitForChild("Plugins")
	script.Parent:WaitForChild("README")
	
	local car=script.Parent.Parent
	local _Tune=require(script.Parent)
	
	wait(_Tune.LoadDelay)
	
	--Weight Scaling
	local weightScaling = _Tune.WeightScaling
	if not workspace:PGSIsEnabled() then
		weightScaling = _Tune.LegacyScaling
	end

	local Drive=car.Wheels:GetChildren()
	
	--Remove Existing Mass
	function DReduce(p)
		for i,v in pairs(p:GetChildren())do
			if v:IsA("BasePart") then
				if v.CustomPhysicalProperties == nil then v.CustomPhysicalProperties = PhysicalProperties.new(v.Material) end
				v.CustomPhysicalProperties = PhysicalProperties.new(
					0,
					v.CustomPhysicalProperties.Friction,
					v.CustomPhysicalProperties.Elasticity,
					v.CustomPhysicalProperties.FrictionWeight,
					v.CustomPhysicalProperties.ElasticityWeight
				)
			end
			DReduce(v)
		end
	end
	DReduce(car)
-- set up keyframe name triggers
if (currentAnimKeyframeHandler ~= nil) then
currentAnimKeyframeHandler:disconnect()
end
currentAnimKeyframeHandler = currentAnimTrack.KeyframeReached:connect(keyFrameReachedFunc)
end
end
--[[ Constants ]]--
local SHIFT_LOCK_OFF = ''
local SHIFT_LOCK_ON = ''
local SHIFT_LOCK_CURSOR = ''
-- Gets a part from the cache, or creates one if no more are available.
function PartCacheStatic:GetPart(): BasePart
	assert(getmetatable(self) == PartCacheStatic, ERR_NOT_INSTANCE:format("GetPart", "PartCache.new"))
	
	if #self.Open == 0 then
		warn("No parts available in the cache! Creating [" .. self.ExpansionSize .. "] new part instance(s) - this amount can be edited by changing the ExpansionSize property of the PartCache instance... (This cache now contains a grand total of " .. tostring(#self.Open + #self.InUse + self.ExpansionSize) .. " parts.)")
		for i = 1, self.ExpansionSize, 1 do
			table.insert(self.Open, MakeFromTemplate(self.Template, self.CurrentCacheParent))
		end
	end
	local part = self.Open[#self.Open]
	self.Open[#self.Open] = nil
	table.insert(self.InUse, part)
	return part
end
-- Do not run the ErrorReporter in Studio
-- TEMP:2019-10-24:  Disabled because error reporter sends too many errors and may cause slowdown
if true or RunService:IsStudio() then
	return
end
-- deviation END

local ReactLazy = require(script.ReactLazy)
export type LazyComponent<T, P> = ReactLazy.LazyComponent<T, P>

local SharedModule = require(Packages.Shared)
export type StatelessFunctionalComponent<P> = SharedModule.React_StatelessFunctionalComponent<P>
--// Animations
local L_154_

function IdleAnim(L_303_arg1)
	L_24_.IdleAnim(L_3_, L_154_, {
		L_44_,
		L_45_,
		L_46_
	});
end;

function EquipAnim(L_304_arg1)
	L_24_.EquipAnim(L_3_, L_154_, {
		L_44_
	});
end;

function UnequipAnim(L_305_arg1)
	L_24_.UnequipAnim(L_3_, L_154_, {
		L_44_
	});
end;

function FireModeAnim(L_306_arg1)
	L_24_.FireModeAnim(L_3_, L_154_, {
		L_44_,
		L_46_,
		L_45_,
		L_54_
	});
end

function ReloadAnim(L_307_arg1)
	L_24_.ReloadAnim(L_3_, L_154_, {
		L_44_,
		L_45_,
		L_46_,
		L_57_,
		L_3_:WaitForChild('Left Arm'),
		L_54_,
		L_48_,
		L_3_:WaitForChild('Right Arm'),
		L_42_
	});
end;

function BoltingBackAnim(L_308_arg1)
	L_24_.BoltingBackAnim(L_3_, L_154_, {
		L_48_
	});
end

function BoltingForwardAnim(L_309_arg1)
	L_24_.BoltingForwardAnim(L_3_, L_154_, {
		L_48_
	});
end

function BoltingForwardAnim(L_310_arg1)
	L_24_.BoltingForwardAnim(L_3_, L_154_, {
		L_48_
	});
end

function BoltBackAnim(L_311_arg1)
	L_24_.BoltBackAnim(L_3_, L_154_, {
		L_48_,
		L_46_,
		L_45_,
		L_44_,
		L_58_
	});
end

function BoltForwardAnim(L_312_arg1)
	L_24_.BoltForwardAnim(L_3_, L_154_, {
		L_48_,
		L_46_,
		L_45_,
		L_44_,
		L_58_
	});
end

function InspectAnim(L_313_arg1)
	L_24_.InspectAnim(L_3_, L_154_, {
		L_46_,
		L_45_
	});
end

function nadeReload(L_314_arg1)
	L_24_.nadeReload(L_3_, L_154_, {
		L_45_,
		L_46_
	});
end
--Text alignment default properties
defaults.ContainerHorizontalAlignment = "Left" -- Align,ent of text within frame container
defaults.ContainerVerticalAlignment = "Center" 
defaults.TextYAlignment = "Bottom" -- Alignment of the text on the line, only makes a difference if the line has variable text sizes
--Do not edit anything below, or it will break.
while true do
wait()
if script.Parent.Button.Value.Value == true then
on()
elseif script.Parent.Button.Value.Value == false then
off()
end
end
--Leave this
Heat = 0

if GUI then
	script.Parent.Visible = true
else
	script.Parent.Visible = false
end
----------------------------------------------------------------------------------------------------
--------------------=[ CFRAME ]=--------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
	,EnableHolster = false
	,HolsterTo = 'Torso'				 -- Put the name of the body part you wanna holster to
	,HolsterPos = CFrame.new(0,0,0) * CFrame.Angles(math.rad(0),math.rad(0),math.rad(0))
	
	,RightArmPos = CFrame.new(-0.85, -0.2, -1.2) * CFrame.Angles(math.rad(-90), math.rad(0), math.rad(0))	--Server
	,LeftArmPos = CFrame.new(1.05,1,-1.4) * CFrame.Angles(math.rad(-100),math.rad(25),math.rad(-20))	--server
	
	,ServerGunPos = CFrame.new(-.3, -1, -0.4) * CFrame.Angles(math.rad(-90), math.rad(0), math.rad(0))
	,GunPos = CFrame.new(0.15, -0.15, 1) * CFrame.Angles(math.rad(90), math.rad(0), math.rad(0))

	,RightPos = CFrame.new(-.65, -0.2, -1) * CFrame.Angles(math.rad(-90), math.rad(0), math.rad(0))	--Client
	,LeftPos = CFrame.new(1.2,0.15,-1.6) * CFrame.Angles(math.rad(-120),math.rad(35),math.rad(-20))	--Client
}

return Config
--Rescripted by Luckymaxer

Tool = script.Parent
Handle = Tool:WaitForChild("Handle")

Players = game:GetService("Players")

Sounds = {
	CoilSound = Handle:WaitForChild("CoilSound"),
}

Gravity = 196.20
JumpHeightPercentage = 0.25

ToolEquipped = false

function GetAllConnectedParts(Object)
	local Parts = {}
	local function GetConnectedParts(Object)
		for i, v in pairs(Object:GetConnectedParts()) do
			local Ignore = false
			for ii, vv in pairs(Parts) do
				if v == vv then
					Ignore = true
				end
			end
			if not Ignore then
				table.insert(Parts, v)
				GetConnectedParts(v)
			end
		end
	end
	GetConnectedParts(Object)
	return Parts
end

function SetGravityEffect()
	if not GravityEffect or not GravityEffect.Parent then
		GravityEffect = Instance.new("BodyForce")
		GravityEffect.Name = "GravityCoilEffect"
		GravityEffect.Parent = Torso
	end
	local TotalMass = 0
	local ConnectedParts = GetAllConnectedParts(Torso)
	for i, v in pairs(ConnectedParts) do
		if v:IsA("BasePart") then
			TotalMass = (TotalMass + v:GetMass())
		end
	end
	local TotalMass = (TotalMass * 196.20 * (1 - JumpHeightPercentage))
	GravityEffect.force = Vector3.new(0, TotalMass, 0)
end

function HandleGravityEffect(Enabled)
	if not CheckIfAlive() then
		return
	end
	for i, v in pairs(Torso:GetChildren()) do
		if v:IsA("BodyForce") then
			v:Destroy()
		end
	end
	for i, v in pairs({ToolUnequipped, DescendantAdded, DescendantRemoving}) do
		if v then
			v:disconnect()
		end
	end
	if Enabled then
		CurrentlyEquipped = true
		ToolUnequipped = Tool.Unequipped:connect(function()
			CurrentlyEquipped = false
		end)
		SetGravityEffect()
		DescendantAdded = Character.DescendantAdded:connect(function()
			wait()
			if not CurrentlyEquipped or not CheckIfAlive() then
				return
			end
			SetGravityEffect()
		end)
		DescendantRemoving = Character.DescendantRemoving:connect(function()
			wait()
			if not CurrentlyEquipped or not CheckIfAlive() then
				return
			end
			SetGravityEffect()
		end)
	end
end

function CheckIfAlive()
	return (((Character and Character.Parent and Humanoid and Humanoid.Parent and Humanoid.Health > 0 and Torso and Torso.Parent and Player and Player.Parent) and true) or false)
end

function Equipped(Mouse)
	Character = Tool.Parent
	Humanoid = Character:FindFirstChild("Humanoid")
	Torso = Character:FindFirstChild("Torso")
	Player = Players:GetPlayerFromCharacter(Character)
	if not CheckIfAlive() then
		return
	end
	if HumanoidDied then
		HumanoidDied:disconnect()
	end
	HumanoidDied = Humanoid.Died:connect(function()
		if GravityEffect and GravityEffect.Parent then
			GravityEffect:Destroy()
		end
	end)
	Sounds.CoilSound:Play()
	HandleGravityEffect(true)
	ToolEquipped = true
end

function Unequipped()
	if HumanoidDied then
		HumanoidDied:disconnect()
	end
	HandleGravityEffect(false)
	ToolEquipped = false
end

Tool.Equipped:connect(Equipped)
Tool.Unequipped:connect(Unequipped)
----- Initialize -----

if IsStudio == true then
	IsLiveCheckActive = true
	task.spawn(function()
		local status, message = pcall(function()
			-- This will error if current instance has no Studio API access:
			DataStoreService:GetDataStore("____PS"):SetAsync("____PS", os.time())
		end)
		local no_internet_access = status == false and string.find(message, "ConnectFail", 1, true) ~= nil
		if no_internet_access == true then
			warn("[ProfileService]: No internet access - check your network connection")
		end
		if status == false and
			(string.find(message, "403", 1, true) ~= nil or -- Cannot write to DataStore from studio if API access is not enabled
				string.find(message, "must publish", 1, true) ~= nil or -- Game must be published to access live keys
				no_internet_access == true) then -- No internet access

			UseMockDataStore = true
			ProfileService._use_mock_data_store = true
			print("[ProfileService]: Roblox API services unavailable - data will not be saved")
		else
			--print("[ProfileService]: Roblox API services available - data will be saved")
		end
		IsLiveCheckActive = false
	end)
end
-------------------------------------
equiped=false
sp=script.Parent
RayLength=1000
Spread=0
enabled=true
reloading=false
down=false
r=game:service("RunService")
last=0
last2=0
last3=0
last4=0
last5=0
last6=0

Bullet=Instance.new("Part")
Bullet.Name="Bullet"
Bullet.BrickColor=BrickColor.new("New Yeller")
Bullet.Anchored=true
Bullet.CanCollide=false
Bullet.Locked=true
Bullet.Size=Vector3.new(1,1,1)