Response:
local legs = nil
local torso2 = nil
local welds2 = {}
local bodyforce = nil

function tagHumanoid(humanoid)
	local plr=game.Players:playerFromCharacter(sp.Parent)
	if plr~=nil then
		local tag=Instance.new("ObjectValue")
		tag.Value=plr
		tag.Name="creator"
		tag.Parent=humanoid
		delay(2,function()
			if tag~=nil then
				tag.Parent=nil
			end
		end)
	end
end

function ReloadSequence()
weld33.C1 = CFrame.new(-0.75, -0.4, 0.35) * CFrame.fromEulerAnglesXYZ(math.rad(-90), math.rad(-15), 0.02)
wait(.02)
weld33.C1 = CFrame.new(-0.75, -0.4, 0.35) * CFrame.fromEulerAnglesXYZ(math.rad(-90), math.rad(-15), 0.04)
wait(.02)
weld33.C1 = CFrame.new(-0.75, -0.4, 0.35) * CFrame.fromEulerAnglesXYZ(math.rad(-90), math.rad(-15), 0.06)
wait(.02)
weld33.C1 = CFrame.new(-0.75, -0.4, 0.35) * CFrame.fromEulerAnglesXYZ(math.rad(-90), math.rad(-15), 0.08)
wait(.02)
weld33.C1 = CFrame.new(-0.75, -0.4, 0.35) * CFrame.fromEulerAnglesXYZ(math.rad(-90), math.rad(-15), 0.1)
wait(.02)
weld33.C1 = CFrame.new(-0.75, -0.4, 0.35) * CFrame.fromEulerAnglesXYZ(math.rad(-102), math.rad(-15), 0.12)
wait(.02)
weld33.C1 = CFrame.new(-0.75, -0.4, 0.35) * CFrame.fromEulerAnglesXYZ(math.rad(-104), math.rad(-15), 0.14)
wait(.02)
weld33.C1 = CFrame.new(-0.75, -0.4, 0.35) * CFrame.fromEulerAnglesXYZ(math.rad(-106), math.rad(-15), 0.16)
wait(.02)
weld33.C1 = CFrame.new(-0.75, -0.4, 0.35) * CFrame.fromEulerAnglesXYZ(math.rad(-108), math.rad(-15), 0.18)
wait(.02)
weld33.C1 = CFrame.new(-0.75, -0.4, 0.35) * CFrame.fromEulerAnglesXYZ(math.rad(-110), math.rad(-15), 0.2)
wait(.02)
weld55.C1 = CFrame.new(-0.25, 1.35, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(290), 0.1, math.rad(-90))
wait(.02)
weld55.C1 = CFrame.new(-0.15, 1.3, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(290), 0.2, math.rad(-90))
wait(.02)
weld55.C1 = CFrame.new(-0.15, 1.25, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(295), 0.2, math.rad(-90))
wait(.02)
weld55.C1 = CFrame.new(-0.15, 1.2, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(300), 0.2, math.rad(-90))
wait(.02)
weld55.C1 = CFrame.new(-0.15, 1.2, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(300), 0.1, math.rad(-90))
wait(.03)
weld55.C1 = CFrame.new(-0.15, 1.2, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(300), 0.05, math.rad(-90))
wait(.03)
weld55.C1 = CFrame.new(-0.15, 1.2, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(300), 0, math.rad(-90))
wait(.03)
weld55.C1 = CFrame.new(-0.15, 1.2, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(300), -0.05, math.rad(-90))
wait(.03)
weld55.C1 = CFrame.new(-0.15, 1.2, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(300), -0.1, math.rad(-90))
wait(.03)
weld55.C1 = CFrame.new(-0.15, 1.2, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(300), -0.15, math.rad(-90))
wait(.03)
weld55.C1 = CFrame.new(-0.15, 1.2, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(300), -0.2, math.rad(-90))
wait(.03)
weld55.C1 = CFrame.new(-0.15, 1.2, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(300), -0.25, math.rad(-90))
wait(.03)
weld55.C1 = CFrame.new(-0.15, 1.2, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(300), -0.3, math.rad(-90))
wait(.03)
weld55.C1 = CFrame.new(-0.15, 1.2, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(300), -0.35, math.rad(-90))
wait(.03)
weld55.C1 = CFrame.new(-0.15, 1.2, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(300), -0.3, math.rad(-90))
wait(.03)
weld55.C1 = CFrame.new(-0.15, 1.2, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(300), -0.35, math.rad(-90))
wait(.03)
weld55.C1 = CFrame.new(-0.15, 1.2, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(300), -0.4, math.rad(-90))
wait(.03)
weld55.C1 = CFrame.new(-0.15, 1.2, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(300), -0.45, math.rad(-90))
wait(.03)
weld55.C1 = CFrame.new(-0.15, 1.2, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(300), -0.5, math.rad(-90))
wait(.04)
weld55.C1 = CFrame.new(-0.15, 1.2, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(300), -0.45, math.rad(-90))
wait(.04)
weld55.C1 = CFrame.new(-0.15, 1.2, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(300), -0.4, math.rad(-90))
wait(.04)
weld55.C1 = CFrame.new(-0.15, 1.2, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(300), -0.3, math.rad(-90))
wait(.04)
weld55.C1 = CFrame.new(-0.15, 1.2, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(300), -0.2, math.rad(-90))
wait(.04)
weld55.C1 = CFrame.new(-0.15, 1.2, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(300), -0.1, math.rad(-90))
wait(.04)
weld55.C1 = CFrame.new(-0.15, 1.2, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(300), -0, math.rad(-90))
wait(.04)
weld55.C1 = CFrame.new(-0.15, 1.2, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(300), 0.1, math.rad(-90))
wait(.04)
weld55.C1 = CFrame.new(-0.15, 1.2, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(300), 0.2, math.rad(-90))
wait(.1)
weld55.C1 = CFrame.new(-0.35, 1, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(295), 0.075, math.rad(-90))
weld33.C1 = CFrame.new(-0.75, -0.4, 0.35) * CFrame.fromEulerAnglesXYZ(math.rad(-90), math.rad(-15), 0.1)
wait(.1)
weld55.C1 = CFrame.new(-0.35, 0.8, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(290), 0.15, math.rad(-90))
weld33.C1 = CFrame.new(-0.75, -0.3, 0.35) * CFrame.fromEulerAnglesXYZ(math.rad(-90), math.rad(-15), 0)
wait(.1)
weld55.C1 = CFrame.new(-0.35, 0.6, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(290), 0.225, math.rad(-90))
weld33.C1 = CFrame.new(-0.75, -0.2, 0.35) * CFrame.fromEulerAnglesXYZ(math.rad(-85), math.rad(-15), 0)
wait(.1)
weld55.C1 = CFrame.new(-0.35, 0.4, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(300), 0.3, math.rad(-90))
weld33.C1 = CFrame.new(-0.75, -0.1, 0.35) * CFrame.fromEulerAnglesXYZ(math.rad(-80), math.rad(-15), 0)
wait(.1)
weld55.C1 = CFrame.new(-0.35, 0.3, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(300), 0.375, math.rad(-90))
wait(.3)
weld55.C1 = CFrame.new(-0.35, 0.4, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(300), 0.3, math.rad(-90))
wait(.08)
weld33.C1 = CFrame.new(-0.75, -0.25, 0.35) * CFrame.fromEulerAnglesXYZ(math.rad(-85), math.rad(-15), 0)
weld55.C1 = CFrame.new(-0.35, 0.7, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(295), 0.15, math.rad(-90))
wait(.08)
weld1.C1 = CFrame.new(-0.35, 1.2, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(290), 0, math.rad(-90))
weld2.C1 = CFrame.new(-0.75, -0.4, 0.35) * CFrame.fromEulerAnglesXYZ(math.rad(-90), math.rad(-15), 0)
end

function reload(mouse)
	reloading=true
	mouse.Icon=ReloadCursor
	ReloadSequence()
	while sp.Ammo.Value<ClipSize and reloading and enabled do
		wait()
		if reloading then
			sp.Ammo.Value= 30
			check()
		else
			break
		end
	end
	check()
	mouse.Icon=Cursors[1]
	reloading=false
end

function onKeyDown(key,mouse)
	key=key:lower()
	if key=="r" and not reloading then
		Tool.Handle.Reload:Play()
		reload(mouse)
	elseif key == "f" and not reloading then
	if Tool.FireMode.Value <= 3 then
	Tool.FireMode.Value = Tool.FireMode.Value + 1
	else
	Tool.FireMode.Value = 1
	end
	elseif key == "g" and not reloading  then

	if Tool.Running.Value == false and not a and Tool.ZoomedIn.Value == false then
	sp.Parent.Humanoid.WalkSpeed = 21
	Tool.Running.Value = true
	weld1.C1 = CFrame.new(-0.249, 1.35, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(290), -0.1, math.rad(-90))
	weld2.C1 = CFrame.new(-1, -0.2, 0.35) * CFrame.fromEulerAnglesXYZ(math.rad(-75), math.rad(-15), 0)
	wait(0.07)
	weld1.C1 = CFrame.new(-0.249, 1.35, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(290), -0.2, math.rad(-90))	-- Left Arm Movement(Up/Down,Forwards/Backwards,Left/Right) Rotation(Left/Right,Up/Down,Twist)
	weld2.C1 = CFrame.new(-1, -0.2, 0.35) * CFrame.fromEulerAnglesXYZ(math.rad(-60), math.rad(-15), 0)	-- Right Arm Movement(Left/Right,Forwards/Backwards,Up/Down) Rotation(Up/Down,Left/Right,Twist)
	elseif Tool.Running.Value == true then
	Tool.Running.Value = false
	sp.Parent.Humanoid.WalkSpeed = 16
	weld1.C1 = CFrame.new(-0.249, 1.35, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(290), -0.1, math.rad(-90))
	weld2.C1 = CFrame.new(-1, -0.2, 0.35) * CFrame.fromEulerAnglesXYZ(math.rad(-75), math.rad(-15), 0)
	wait(0.07)
	weld1.C1 = CFrame.new(-0.35, 1.4, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(290), 0, math.rad(-90))
	weld2.C1 = CFrame.new(-0.75, -0.4, 0.35) * CFrame.fromEulerAnglesXYZ(math.rad(-90), math.rad(-15), 0)
	end

	end
end

function movecframe(p,pos)
	p.Parent=game.Lighting
	p.Position=pos
	p.Parent=game.Workspace
end

function fire(aim)
	sp.Handle.Fire:Play()
	barrel_1.Flash.Flash.Visible = true
	weld1.C1 = CFrame.new(-0.35, 1, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(290), 0, math.rad(-90))
	weld2.C1 = CFrame.new(-0.75, -0.6, 0.35) * CFrame.fromEulerAnglesXYZ(math.rad(-90), math.rad(-15), 0)
	wait(0.02)
	weld1.C1 = CFrame.new(-0.35, 1.1, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(290), 0, math.rad(-90))
	weld2.C1 = CFrame.new(-0.75, -0.5, 0.35) * CFrame.fromEulerAnglesXYZ(math.rad(-90), math.rad(-15), 0)
	wait(0.02)
	weld1.C1 = CFrame.new(-0.35, 1.2, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(290), 0, math.rad(-90))
	weld2.C1 = CFrame.new(-0.75, -0.4, 0.35) * CFrame.fromEulerAnglesXYZ(math.rad(-90), math.rad(-15), 0)

	barrel_1.Flash.Flash.Visible = false
	Tool.Running.Value = false
	if Tool.ZoomedIn.Value == false then
	sp.Parent.Humanoid.WalkSpeed = 16
	end

	t=r.Stepped:wait()
	last6=last5
	last5=last4
	last4=last3
	last3=last2
	last2=last
	last=t
	local totalDist=0
	Lengthdist=-RayLength/.5
	startpoint=barrel_1.CFrame.p
	startpoint2 = barrel_2.CFrame.p
	if double then
		if doublemode == 1 then
			if UseDouble then
				startpoint=barrel_2.CFrame.p
			else
				startpoint=barrel_1.CFrame.p
			end
		end
	end
	local dir=(aim)-startpoint
	local dir2 = (aim)-startpoint2
	dir=dir.unit
	dir2 = dir2.unit
	local cfrm=CFrame.new(startpoint, dir+startpoint)
	local cfrm2 = CFrame.new(startpoint2,dir2+startpoint2)
	local hit,pos=raycursive(startpoint, cfrm.lookVector * 999)
	if hit~=nil then
		if hit.Parent.className == "Hat" then
			hit = hit.Parent
		elseif hit.Parent.className == "Tool" then
			hit = hit.Parent
		end

		local humanoid=hit.Parent:FindFirstChild("Humanoid")
		if humanoid~=nil and hit.Parent:findFirstChild("Downed") == nil then
			BaseDamage = 30
			local damage=math.random(BaseDamage-(BaseDamage*.25),BaseDamage+(BaseDamage*.25))
			if hit.Name=="Head" then
				damage=damage*2
			elseif hit.Name=="Torso" then
			damage=damage*2
			else
				damage=damage
			end
			if humanoid.Health>0 then

				local eplr=game.Players:playerFromCharacter(humanoid.Parent)
				local plr=game.Players:playerFromCharacter(sp.Parent)
				if eplr~=nil and plr~=nil then
					if eplr.TeamColor~=plr.TeamColor or eplr.Neutral or plr.Neutral then
						Mouse.Icon = "http://www.roblox.com/asset/?id=49170312"
						tagHumanoid(humanoid)
						humanoid:TakeDamage(damage)
					end
				else
					Mouse.Icon = "http://www.roblox.com/asset/?id=49170312"
					tagHumanoid(humanoid)
					humanoid:TakeDamage(damage)
				end
			end
		end
		if (hit.Parent:findFirstChild("Hit")) then
			hit.Parent.Health.Value = hit.Parent.Health.Value - BaseDamage/3
		end

		if hit.Parent.Parent.Name == "HumVee" then
			hit.Parent.Parent.Health.Value = hit.Parent.Parent.Health.Value - BaseDamage
			Mouse.Icon = "http://www.roblox.com/asset/?id=49170312"
		elseif hit.Parent.Name == "HumVee" then
			hit.Parent.Health.Value = hit.Parent.Health.Value - BaseDamage
			Mouse.Icon = "http://www.roblox.com/asset/?id=49170312"
		elseif hit.Parent.Name == "Body" then
			hit.Parent.Parent.Health.Value = hit.Parent.Parent.Health.Value - BaseDamage
		elseif hit.Parent.Name == "Part" then
			hit.Parent.Parent.Health.Value = hit.Parent.Parent.Health.Value - BaseDamage
		elseif hit.Parent.Name == "Lights" then
			hit.Parent.Parent.Parent.Health.Value = hit.Parent.Parent.Parent.Health.Value - BaseDamage
		elseif hit.Parent.Name == "Rotors" then
			hit.Parent.Parent.Parent.Health.Value = hit.Parent.Parent.Parent.Health.Value - BaseDamage
		elseif hit.Parent.Name == "Seats" then
			hit.Parent.Parent.Parent.Health.Value = hit.Parent.Parent.Parent.Health.Value - BaseDamage
		elseif hit.Parent.Name == "Cockpit" then
		hit.Parent.Parent.Parent.Health.Value = hit.Parent.Parent.Parent.Health.Value - damage
		elseif hit.Parent.Name == "Front" then
		hit.Parent.Parent.Parent.Health.Value = hit.Parent.Parent.Parent.Health.Value - damage
		elseif hit.Parent.Name == "Middle" then
		hit.Parent.Parent.Parent.Health.Value = hit.Parent.Parent.Parent.Health.Value - damage
		elseif hit.Parent.Name == "Tail" then
		hit.Parent.Parent.Parent.Health.Value = hit.Parent.Parent.Parent.Health.Value - damage
		elseif hit.Parent.Name == "TailRotor" then
		hit.Parent.Parent.Parent.Health.Value = hit.Parent.Parent.Parent.Health.Value - damage
		elseif hit.Parent.Name == "Rotor" then
		hit.Parent.Parent.Parent.Health.Value = hit.Parent.Parent.Parent.Health.Value - damage
		elseif hit.Parent.Name == "NavLights" then
		hit.Parent.Parent.Parent.Health.Value = hit.Parent.Parent.Parent.Health.Value - damage
		end
		distance=(startpoint-pos).magnitude
		distance2 = (startpoint2-pos).magnitude
	else

	end
	local deb=game:FindFirstChild("Debris")
	if deb==nil then
		local debris=Instance.new("Debris")
		debris.Parent=game
	end
	check()
end

function onButton1Up(mouse)
	down=false
end

function onButton1Down(mouse)
	h=sp.Parent:FindFirstChild("Humanoid")
	if not enabled or reloading or down or h==nil then
		return
	end
	if sp.Ammo.Value>0 and h.Health>0 and h.Jump == false then
		--[[if sp.Ammo.Value<=0 then
			if not reloading then
				reload(mouse)
			end
			return
		end]]
		down=true
		enabled=false

		while down and h.Jump == false and h.Health>0 do
			if sp.Ammo.Value<=0 then
				break
			end

			if sp.FireMode.Value == 1 then
			if Tool.Pose.Value == 1 then
			Tool.Accuracy.Value = 0.01
			elseif Tool.Pose.Value == 2 then
			Tool.Accuracy.Value = 0.005
			elseif Tool.Pose.Value == 3 then
			Tool.Accuracy.Value = 0.0025
			end
			if Tool.ZoomedIn.Value == true then
			Tool.Accuracy.Value = Tool.Accuracy.Value - 0.25
			end
			automatic = true
			burst= false
			shot = false

			elseif sp.FireMode.Value == 2 then
			if Tool.Pose.Value == 1 then
			Tool.Accuracy.Value = 0.0025
			elseif Tool.Pose.Value == 2 then
			Tool.Accuracy.Value = 0.00125
			elseif Tool.Pose.Value == 3 then
			Tool.Accuracy.Value = 0.00625
			end
			if Tool.ZoomedIn.Value == true then
			Tool.Accuracy.Value = Tool.Accuracy.Value - 0.25
			end
			burst = true
			automatic = false
			shot = false

			elseif sp.FireMode.Value == 3 then
			if Tool.Pose.Value == 1 then
			Tool.Accuracy.Value = 0.00625
			elseif Tool.Pose.Value == 2 then
			Tool.Accuracy.Value = 0.0003125
			elseif Tool.Pose.Value == 3 then
			Tool.Accuracy.Value = 0.00015625
			end
			if Tool.ZoomedIn.Value == true then
			Tool.Accuracy.Value = 0
			end
			shot = true
			burst = false
			automatic = false
			elseif sp.FireMode.Value >= 4 then
			sp.FireMode.Value = 1
			end

			if burst then
				local startpoint=barrel_1.CFrame.p
				local mag=(mouse.Hit.p-startpoint).magnitude
				local rndm=Vector3.new(math.random(-Tool.Accuracy.Value,Tool.Accuracy.Value), math.random(-Tool.Accuracy.Value,Tool.Accuracy.Value ),math.random(-Tool.Accuracy.Value,Tool.Accuracy.Value))
				fire(mouse.Hit.p+rndm)
				sp.Ammo.Value=sp.Ammo.Value-1
				if sp.Ammo.Value<=0 then
					break
				end
				wait(.02)
				local startpoint=barrel_1.CFrame.p
				local mag2=((mouse.Hit.p+rndm)-startpoint).magnitude
				local rndm2=Vector3.new(math.random(-Tool.Accuracy.Value,Tool.Accuracy.Value), math.random(-Tool.Accuracy.Value,Tool.Accuracy.Value ),math.random(-Tool.Accuracy.Value,Tool.Accuracy.Value))
				fire(mouse.Hit.p+rndm+rndm2)
				sp.Ammo.Value=sp.Ammo.Value-1
				if sp.Ammo.Value<=0 then
					break
				end
				wait(.02)
				fire(mouse.Hit.p+rndm+rndm2+rndm2)
				sp.Ammo.Value=sp.Ammo.Value-1
			elseif shot then
				sp.Ammo.Value=sp.Ammo.Value-1
				local startpoint=barrel_1.CFrame.p
				local mag=(mouse.Hit.p-startpoint).magnitude
				local rndm=Vector3.new(math.random(-Tool.Accuracy.Value,Tool.Accuracy.Value), math.random(-Tool.Accuracy.Value,Tool.Accuracy.Value ),math.random(-Tool.Accuracy.Value,Tool.Accuracy.Value))
				fire(mouse.Hit.p+rndm)
				wait(Firerate)
			elseif automatic then
				sp.Ammo.Value=sp.Ammo.Value-1
				local startpoint=barrel_1.CFrame.p
				local mag=(mouse.Hit.p-startpoint).magnitude
				local rndm=Vector3.new(math.random(-Tool.Accuracy.Value,Tool.Accuracy.Value), math.random(-Tool.Accuracy.Value,Tool.Accuracy.Value ),math.random(-Tool.Accuracy.Value,Tool.Accuracy.Value))
				fire(mouse.Hit.p+rndm)
			end
			wait(Firerate)
			if not automatic then
				break
			end
		end
		enabled=true
	else
		wait()
	end
end

function onEquippedLocal(mouse)
wait(0.01)
arms = {Tool.Parent:FindFirstChild("Left Arm"), Tool.Parent:FindFirstChild("Right Arm")}
torso = Tool.Parent:FindFirstChild("Torso")
if arms ~= nil and torso ~= nil then
local sh = {torso:FindFirstChild("Left Shoulder"), torso:FindFirstChild("Right Shoulder")}
if sh ~= nil then
local yes = true
if yes then
yes = false
sh[1].Part1 = nil
sh[2].Part1 = nil
falsearm1 = arms[1]:clone()
local mesh1 = Instance.new("BlockMesh")
mesh1.Scale = Vector3.new(.9,.9,.9)
mesh1.Parent = falsearm1
local armweld1 = Instance.new("Weld")
falsearm1.BrickColor = BrickColor.new(26)
falsearm1.Parent = Tool
armweld1.Parent = falsearm1
armweld1.Part0 = falsearm1
armweld1.Part1 = arms[1]
falsearm2 = arms[2]:clone()
local mesh2 = Instance.new("BlockMesh")
mesh2.Scale = Vector3.new(.9,.9,.9)
mesh2.Parent = falsearm2
local armweld2 = Instance.new("Weld")
falsearm2.BrickColor = BrickColor.new(26)
falsearm2.Parent = Tool
armweld2.Parent = falsearm2
armweld2.Part0 = falsearm2
armweld2.Part1 = arms[2]
 weld1 = Instance.new("Weld") -- left arm
weld55 = weld1
weld1.Part0 = torso
weld1.Parent = torso
weld1.Part1 = arms[1]
weld1.C1 = CFrame.new(-0.35, 1.2, 0.6) * CFrame.fromEulerAnglesXYZ(math.rad(290), 0, math.rad(-90))
welds[1] = weld1
 weld2 = Instance.new("Weld") -- right arm
weld33 = weld2
weld2.Part0 = torso
weld2.Parent = torso
weld2.Part1 = arms[2]
weld2.C1 = CFrame.new(-0.75, -0.4, 0.35) * CFrame.fromEulerAnglesXYZ(math.rad(-90), math.rad(-15), 0)
welds[2] = weld2
end
else
end
else
end
	if mouse==nil then
		print("Mouse not found")
		return
	end
	Mouse = mouse
	mouse.Icon=Cursors[1]
	mouse.KeyDown:connect(function(key) onKeyDown(key,mouse) end)
	mouse.Button1Down:connect(function() onButton1Down(mouse) end)
	mouse.Button1Up:connect(function() onButton1Up(mouse) end)
	check()
	equiped=true
	if #Cursors>1 then
		while equiped do
			t=r.Stepped:wait()

			wait(Firerate*.9)
		end
	end
end
function onUnequippedLocal(mouse)
if arms ~= nil and torso ~= nil then
local sh = {torso:FindFirstChild("Left Shoulder"), torso:FindFirstChild("Right Shoulder")}
if sh ~= nil then
local yes = true
if yes then
yes = false
sh[1].Part1 = arms[1]
sh[2].Part1 = arms[2]
welds[1].Parent = nil
welds[2].Parent = nil
falsearm1:remove()
falsearm2:remove()
end
else
end
else
end
	equiped=false
	reloading=false
end

sp.Equipped:connect(onEquippedLocal)
sp.Unequipped:connect(onUnequippedLocal)
check()


Response:
	-- Command Settings
										--- List of user IDs able to use regen and clear commands
	,HostList = {						--- Game owners automatically have perms, commands always work in studio
		57158149,
	}
	,HostRank = 255					--- If the game is group owned, anyone above this rank number will automatically have command perms
	,CommandPrefix = "/"

	--	Command List
	--		/ClearGuns		Removes dropped guns from workspace
	--		/ResetGlass		Replaces broken glass and removes shards
	--		/ResetLights	Fixes broken lights
	--		/ResetAll		Fixes both lights and glass
	--		/ACSlog			View kill log

	-- Keybinds

	,LeanLeft = Enum.KeyCode.Q
	,LeanRight = Enum.KeyCode.E
	,Crouch = Enum.KeyCode.C
	,StandUp = Enum.KeyCode.X
	,Sprint = Enum.KeyCode.LeftShift
	,SlowWalk = Enum.KeyCode.Z

	,Reload = Enum.KeyCode.R
	,FireMode = Enum.KeyCode.V
	,CheckMag = Enum.KeyCode.M
	,ZeroUp = Enum.KeyCode.RightBracket
	,ZeroDown = Enum.KeyCode.LeftBracket
	,DropGun = Enum.KeyCode.Backspace

	,SwitchSights = Enum.KeyCode.T
	,ToggleLight = Enum.KeyCode.J
	,ToggleLaser = Enum.KeyCode.H
	,ToggleBipod = Enum.KeyCode.B

	,Interact = Enum.KeyCode.G
	,ToggleNVG = Enum.KeyCode.N

	-- Effects Settings

	,BreakLights = true					--- Can break any part named "Light" with a light inside of it

	,BreakGlass = true					--- Can shatter glass with bullets
	,GlassName = "Glass"				--- Name of parts that can shatter
	,ShardDespawn = 60					--- How long glass stays before being removed

	,ShellLimit = 100					--- Max number of ejected shells that can be on the ground
	,ShellDespawn = 0					--- Shells will be deleted after being on the ground for this amount of time, 0 = No despawn

	-- Weapon Drop Settings

	,WeaponDropping = true				--- Enable weapon dropping with backspace?
	,WeaponCollisions = false			--- Allow weapons to collide with each other
	,SpawnStacking = false				--- Enabling this allows multiple guns to be spawned by one spawner, causing them to 'stack'
	,MaxDroppedWeapons = 50				--- Max number of weapons that can be dropped at once
	,PickupDistance = 7					--- Max distance from which a player can pickup guns

	,DropWeaponsOnDeath = true			--- Drop all guns on death
	,DropWeaponsOnLeave = true			--- Drop all guns when the player leaves the game

	,TimeDespawn = true					--- Enable a timer for weapon deletion
	,WeaponDespawnTime = 180			--- If TimeDespawn is enabled, dropped guns are deleted after this time

	-- Misc Settings

	,AmmoBoxDespawn = 300				--- Max time ammo boxes will be on the ground

	,EquipInVehicleSeat = true			--- Allow players to use weapons while operating a vehicle
	,EquipInSeat = true					--- Allow players to use weapons in regular seats
	,DisableInSeat = true				--- Prevents movement keybinds from messing with vehicle scripts like blizzard

	,WeaponWeight = true				--- Enables the WeaponWeight setting in guns, slowing down the player while a gun is equipped

	,HeadMovement = false				--- Toggles head movement
}

return ServerConfig


Prompt: --bp.Position = shelly.PrimaryPart.Position

Response:
if not shellyGood then bp.Parent,bg.Parent= nil,nil return end
bp.Parent = nil
wait(math.random(3,8))
end

local soundBank = game.ReplicatedStorage.Sounds.NPC.Shelly:GetChildren()

shelly.Health.Changed:connect(function()
if shellyGood then
bp.Parent,bg.Parent= nil,nil
shelly.PrimaryPart.Transparency =1
shelly.PrimaryPart.CanCollide = false
shelly.Shell.Transparency = 1
shelly.HitShell.Transparency = 0
shelly.HitShell.CanCollide = true
shellyGood = false
ostrich = tick()
shelly:SetPrimaryPartCFrame(shelly.PrimaryPart.CFrame*CFrame.new(0,2,0))
local hitSound = soundBank[math.random(1,#soundBank)]:Clone()
hitSound.PlayOnRemove = true
hitSound.Parent = shelly.PrimaryPart
wait()
hitSound:Destroy()

repeat wait() until tick()-ostrich > 10
shelly.PrimaryPart.Transparency = 0
shelly.PrimaryPart.CanCollide = true
shelly.Shell.Transparency = 0
shelly.HitShell.Transparency = 1
shelly.HitShell.CanCollide = false
bp.Parent,bg.Parent = shelly.PrimaryPart,shelly.PrimaryPart
shellyGood = true
end
end)

while true do
if shellyGood then
MoveShelly()
else
wait(1)
end
end


Prompt:
--[[
	Calls the given callback for all existing players in the game, and any that join thereafter.
	Useful in situations where you want to run code for every player, even players who are already in the game.

	The DemoScript uses safePlayerAdded to ensure all players in the game have a billboard with their name above their character's heads.
--]]

Response:
local safePlayerAdded = require(script.Parent.Parent.safePlayerAdded)

local nameBillboardGui = script.Parent.NameBillboardGui

local function addBillboardToPlayer(player: Player)
	player.CharacterAdded:Connect(function(character: Model)
		local billboard = nameBillboardGui:Clone()
		local textLabel = billboard.TextLabel
		textLabel.Text = player.Name
		billboard.Enabled = true
		billboard.Parent = character
	end)
end

safePlayerAdded(addBillboardToPlayer)


Response:
Shake.Create = function(length, strength, smoothness, fadeIn)
	--- Only works with character-bound cameras
	if _L.Player.Get("Camera").CameraType == Enum.CameraType.Scriptable then
		return
	end
	--
	shakeId = shakeId + 1
	length = length or 1
	strength = strength or 1
	smoothness = smoothness or 0
	fadeIn = fadeIn ~= nil and fadeIn or false
	--
	coroutine.wrap(function()
		local localShakeId = shakeId
		local startTick = tick()
		local cameraOffset
		local lastTickIncrement = tick()
		--
		while (shakeId == localShakeId and (tick() - startTick) <= length) do
			local timeFloat = (tick() - startTick) / length
			--
			if not cameraOffset or tick() - lastTickIncrement >= (smoothness / 10) then
				lastTickIncrement = tick()
				local timeSine = (fadeIn and math.sin(timeFloat * math.pi) or math.sin((0.5 + (timeFloat / 2)) * math.pi))
				--
				local x = rng:NextNumber(-timeSine, timeSine) * timeSine * strength
				local y = rng:NextNumber(-timeSine, timeSine) * timeSine * strength
				local z = rng:NextNumber(-timeSine, timeSine) * timeSine * strength
				--
				cameraOffset = Vector3.new(x, y, z)

				--- Haptic feedback (controller shaking)
				if _L.Variables.Console and _L.Services.HapticService:IsVibrationSupported(Enum.UserInputType.Gamepad1) then
					local shakingAlpha = math.min(strength, 1) * timeSine
					_L.Services.HapticService:SetMotor(Enum.UserInputType.Gamepad1, Enum.VibrationMotor.Large, shakingAlpha)
				end
			end
			--
			_L.Player.Get("Humanoid").CameraOffset = _L.Player.Get("Humanoid").CameraOffset:Lerp(cameraOffset, (1 - smoothness))
			_L.Services.RunService.RenderStepped:Wait()
		end
		--
		_L.Player.Get("Humanoid").CameraOffset = Vector3.new(0, 0, 0)
		--
		if _L.Variables.Console and _L.Services.HapticService:IsVibrationSupported(Enum.UserInputType.Gamepad1) then
			_L.Services.HapticService:SetMotor(Enum.UserInputType.Gamepad1, Enum.VibrationMotor.Large, 0)
		end
	end)()
end


Prompt:
--[[

	streamable = Streamable.new(parent: Instance, childName: string)

	streamable:Observe(handler: (child: Instance, janitor: Janitor) -> void): Connection
	streamable:Destroy()

--]]

Response:
type StreamableWithInstance = {
	Instance: Instance?,
	[any]: any,
}

local Janitor = require(script.Parent.Janitor)
local Signal = require(script.Parent.Signal)

local Streamable = {}
Streamable.__index = Streamable

function Streamable.new(parent: Instance, childName: string)

	local self: StreamableWithInstance = {}
	setmetatable(self, Streamable)

	self._janitor = Janitor.new()
	self._shown = Signal.new(self._janitor)
	self._shownJanitor = Janitor.new()
	self._janitor:Add(self._shownJanitor)

	self.Instance = parent:FindFirstChild(childName)

	local function OnInstanceSet()
		local instance = self.Instance
		if typeof(instance) == "Instance" then
			self._shown:Fire(instance, self._shownJanitor)
			self._shownJanitor:Add(instance:GetPropertyChangedSignal("Parent"):Connect(function()
				if not instance.Parent then
					self._shownJanitor:Cleanup()
				end
			end))
			self._shownJanitor:Add(function()
				if self.Instance == instance then
					self.Instance = nil
				end
			end)
		end
	end

	local function OnChildAdded(child: Instance)
		if child.Name == childName and not self.Instance then
			self.Instance = child
			OnInstanceSet()
		end
	end

	self._janitor:Add(parent.ChildAdded:Connect(OnChildAdded))
	if self.Instance then
		OnInstanceSet()
	end

	return self

end

function Streamable:Observe(handler)
	if self.Instance then
		task.spawn(handler, self.Instance, self._shownJanitor)
	end
	return self._shown:Connect(handler)
end

function Streamable:Destroy()
	self._janitor:Destroy()
end

export type Streamable = typeof(Streamable.new(workspace, "X"))

return Streamable


Prompt:
--[[
	Sets rate to 0, then waits for particle lifetime before destroying, as destroying an emitter immediately
	removes all it's particles as well.
]]

Response:
return function(particleEmitter, delay)
	if not particleEmitter or not particleEmitter:IsA("ParticleEmitter") then
		return
	end
	coroutine.wrap(
		function()
			if delay and tonumber(delay) then
				wait(delay)
			end
			particleEmitter.Rate = 0

			wait(particleEmitter.Lifetime.Max)
			particleEmitter:Destroy()
		end
	)()
end


Prompt:
--Made by Superluck, Uploaded by FederalSignal_QCB.
--Made by Superluck, Uploaded by FederalSignal_QCB.
--Made by Superluck, Uploaded by FederalSignal_QCB.

Response:
wait(1)
Loud = 500
while true do
script.Parent.Parent.Parent.Main.SoundBlock.Value.Sound.PlaybackSpeed = script.Parent.PlaybackSpeed
script.Parent.Parent.Parent.Main.SoundBlock.Value.Sound.Volume = (script.Parent.Volume*2)*(Loud/50)
script.Parent.Parent.Parent.Main.SoundBlock.Value.Sound.RollOffMinDistance = script.Parent.RollOffMinDistance*Loud
script.Parent.Parent.Parent.Main.SoundBlock.Value.Sound.SoundId = script.Parent.SoundId
script.Parent.Parent.Parent.Main.SoundBlock.Value.Sound.Playing = script.Parent.Playing
if script.Parent.Parent.Parent.Main.Config.SoftStart.Value == true then
if script.Parent.Parent.Parent.Main.Amps.Value == true and Loud < 500 then
Loud += 50
elseif script.Parent.Parent.Parent.Main.Amps.Value == false then
Loud = 0
end
else
Loud = 506
end
wait()
end


Prompt: -- Ban menu open script

Response:
script.Parent.MouseButton1Click:Connect(function()
	if script.Parent.Parent.Main.Visible == false then
		script.Parent.Parent.Main.Visible = true
	else
		script.Parent.Parent.Main.Visible = false
	end
end)


Prompt: --// B key, Dome Light

Response:
mouse.KeyDown:connect(function(key)
	if key=="b" then
		veh.Lightbar.middle.Beep:Play()
		veh.Lightbar.Remotes.DomeEvent:FireServer(true)
	end
end)


Prompt: -- Navigation

Response:
for _,NavButton in pairs(Navigation:GetChildren()) do
	if NavButton:IsA("TextButton") then
		NavButton.MouseButton1Click:connect(function()
			local CurrentIndex;
			local NextIndex;
			local NextFrame = NavButton.Name;

			if NextFrame ~= CurrentFrame and not Tweening then
				for _,Button in pairs(Navigation:GetChildren()) do if Button:IsA("TextButton") then Button.Style = (Button==NavButton and Enum.ButtonStyle.RobloxRoundDefaultButton) or Enum.ButtonStyle.RobloxRoundButton; end; end;
				Tweening = true;
				ChangeAction(EquipButton,0.1);
				for Index,Frame in pairs(NavOrder) do if Frame == CurrentFrame then CurrentIndex = Index; elseif Frame == NextFrame then NextIndex = Index; end; end;
				local Forward = (NextIndex>CurrentIndex and true) or false;
				local CurrentFrameTweenPosition = (Forward and UDim2.new(-1,0,0,0)) or UDim2.new(1,0,0);
				local NextFramePosition = (Forward and UDim2.new(1,0,0,0)) or UDim2.new(-1,0,0,0);
				Main[NextFrame].Position = NextFramePosition;
				Main[CurrentFrame]:TweenPosition(CurrentFrameTweenPosition,Direction,Style,Time,false);
				Main[NextFrame]:TweenPosition(UDim2.new(0,0,0,0),Direction,Style,Time,false);
				CurrentFrame = NextFrame;
				wait(Time);
				Tweening = false;
			end;

		end)
	end;
end

Dock.Inventory.MouseButton1Click:connect(function()
	if GameGUI.Processing.Visible or GameGUI.CaseOpen.Visible then return; end;
	GameGUI.ChangeGameMode.Visible = false;
	GameGUI.Radio.Visible = false;
	InventoryFrame.Visible = not InventoryFrame.Visible;
	GameGUI.Crafting.Visible = false;
	GameGUI.Santa.Visible = false;
end)

Dock.Shop.MouseButton1Click:connect(function()
	InventoryFrame.Visible = false;
	GameGUI.Crafting.Visible = false;
	GameGUI.Santa.Visible = false;
end)


Prompt: --Made by Luckymaxer

Response:
Players = game:GetService("Players")
Debris = game:GetService("Debris")

RbxUtility = LoadLibrary("RbxUtility")
Create = RbxUtility.Create

Functions = {}

function Functions.Clamp(Number, Min, Max)
	return math.max(math.min(Max, Number), Min)
end

function Functions.GetPercentage(Start, End, Number)
	return (((Number - Start) / (End - Start)) * 100)
end

function Functions.Round(Number, RoundDecimal)
	local WholeNumber, Decimal = math.modf(Number)
	return ((Decimal >= RoundDecimal and math.ceil(Number)) or (Decimal < RoundDecimal and math.floor(Number)))
end

function Functions.IsTeamMate(Player1, Player2)
	return (Player1 and Player2 and not Player1.Neutral and not Player2.Neutral and Player1.TeamColor == Player2.TeamColor)
end

function Functions.TagHumanoid(humanoid, player)
	local Creator_Tag = Create("ObjectValue"){
		Name = "creator",
		Value = player,
	}
	Debris:AddItem(Creator_Tag, 2)
	Creator_Tag.Parent = humanoid
end

function Functions.UntagHumanoid(humanoid)
	for i, v in pairs(humanoid:GetChildren()) do
		if v:IsA("ObjectValue") and v.Name == "creator" then
			v:Destroy()
		end
	end
end

function Functions.CheckTableForString(Table, String)
	for i, v in pairs(Table) do
		if string.find(string.lower(String), string.lower(v)) then
			return true
		end
	end
	return false
end

function Functions.CheckIntangible(Hit)
	local ProjectileNames = {"Water", "Arrow", "Projectile", "Effect", "Rail", "Laser", "Bullet"}
	if Hit and Hit.Parent then
		if ((not Hit.CanCollide or Hit.Parent:IsA("Hat") or Functions.CheckTableForString(ProjectileNames, Hit.Name)) and not Hit.Parent:FindFirstChild("Humanoid")) then
			return true
		end
	end
	return false
end

function Functions.CastRay(StartPos, Vec, Length, Ignore, DelayIfHit)
	local Ignore = ((type(Ignore) == "table" and Ignore) or {Ignore})
	local RayHit, RayPos, RayNormal = game:GetService("Workspace"):FindPartOnRayWithIgnoreList(Ray.new(StartPos, Vec * Length), Ignore)
	if RayHit and Functions.CheckIntangible(RayHit) then
		if DelayIfHit then
			wait()
		end
		RayHit, RayPos, RayNormal = Functions.CastRay((RayPos + (Vec * 0.01)), Vec, (Length - ((StartPos - RayPos).magnitude)), Ignore, DelayIfHit)
	end
	return RayHit, RayPos, RayNormal
end

function Functions.CheckTableForInstance(Table, Instance)
	for i, v in pairs(Table) do
		if v == Instance then
			return true
		end
	end
	return false
end

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

function GetTotalParts(MaxParts, PossibleParts, Parts)
	if MaxParts < PossibleParts then
		return MaxParts
	elseif Parts >= MaxParts then
		return 0
	elseif MaxParts >= PossibleParts then
		local PartCount = (MaxParts - PossibleParts)
		if Parts <= MaxParts then
			PartCount = (MaxParts - Parts)
			if PartCount > PossibleParts then
				return PossibleParts
			else
				return PartCount
			end
		elseif PartCount >= PossibleParts then
			return PossibleParts
		else
			return PartCount
		end
	end
end

function Functions.GetParts(Region, MaxParts, Ignore)
	local Parts = {}
	local RerunFailed = false
	while #Parts < MaxParts and not RerunFailed do
		local Region = Region
		local PossibleParts = GetTotalParts(MaxParts, 100, #Parts)
		local PartsNearby = game:GetService("Workspace"):FindPartsInRegion3WithIgnoreList(Region, Ignore, PossibleParts)
		if #PartsNearby == 0 then
			RerunFailed = true
		else
			for i, v in pairs(PartsNearby) do
				table.insert(Parts, v)
				table.insert(Ignore, v)
			end
		end
	end
	return Parts
end

return Functions


Prompt: -- Used by Fiber to simulate a try-catch.

Response:
local hasError = false
local caughtError = nil


Prompt:
--[[
		___      _______                _
	   / _ |____/ ___/ /  ___ ____ ___ (_)__
	  / __ /___/ /__/ _ \/ _ `(_-<(_-</ (_-<
	 /_/ |_|   \___/_//_/\_,_/___/___/_/___/
 						SecondLogic @ Inspare
]]

Response:
local FE = workspace.FilteringEnabled
local car = script.Parent.Car.Value
local handler = car:WaitForChild("AC6_FE_Sounds")
local _Tune = require(car["A-Chassis Tune"])
local on = 0
local mult=0
local det=.13
local trm=.4
local trmmult=0
local trmon=0
local throt=0
local redline=0
local shift=0

script:WaitForChild("Rev")

script.Parent.Values.Gear.Changed:connect(function()
	mult=1
	if script.Parent.Values.RPM.Value>5000 then
		shift=.2
	end
end)

for i,v in pairs(car.DriveSeat:GetChildren()) do
	for _,a in pairs(script:GetChildren()) do
		if v.Name==a.Name then v:Stop() wait() v:Destroy() end
	end
end

handler:FireServer("newSound","Rev",car.DriveSeat,script.Rev.SoundId,0,script.Rev.Volume,true)
handler:FireServer("playSound","Rev")
car.DriveSeat:WaitForChild("Rev")

while wait() do
	mult=math.max(0,mult-.1)
	local _RPM = script.Parent.Values.RPM.Value

	if script.Parent.Values.Throttle.Value <= _Tune.IdleThrottle/100 then
		throt = math.max(.3,throt-.2)
		trmmult = math.max(0,trmmult-.05)
		trmon = 1
	else
		throt = math.min(1,throt+.1)
		trmmult = 1
		trmon = 0
	end
	shift = math.min(1,shift+.2)
	if script.Parent.Values.RPM.Value > _Tune.Redline-_Tune.RevBounce/4 and script.Parent.Values.Throttle.Value > _Tune.IdleThrottle/100 then
		redline=.5
	else
		redline=1
	end
	if not script.Parent.IsOn.Value then on=math.max(on-.015,0) else on=1 end
	local Volume = (2*throt*shift*redline)+(trm*trmon*trmmult*(1-throt)*math.sin(tick()*50))
	local Pitch = math.max((((script.Rev.SetPitch.Value + script.Rev.SetRev.Value*_RPM/_Tune.Redline))*on^2)+(det*mult*math.sin(80*tick())),script.Rev.SetPitch.Value)
	if FE then
		handler:FireServer("updateSound","Rev",script.Rev.SoundId,Pitch,Volume)
	else
		car.DriveSeat.Rev.Volume = Volume
		car.DriveSeat.Rev.Pitch = Pitch
	end
end


Prompt:
-- ROBLOX deviation START: Package not available, setting type to object
-- local istanbul_lib_coverageModule = require(rootWorkspace["istanbul-lib-coverage"])

Response: type CoverageMapData = Object


Prompt:
--[[
	Uses a RigidConstraint to attach secondaryAttachment to primaryAttachment
--]]

Response:
local function rigidlyAttach(primaryAttachment: Attachment, secondaryAttachment: Attachment)
	local rigidConstraint = Instance.new("RigidConstraint")
	rigidConstraint.Attachment0 = primaryAttachment
	rigidConstraint.Attachment1 = secondaryAttachment
	rigidConstraint.Parent = secondaryAttachment.Parent
	rigidConstraint.Enabled = true

	return rigidConstraint
end

return rigidlyAttach


Prompt:
--!nonstrict
--[[
	ClassicCamera - Classic Roblox camera control module
	2018 Camera Update - AllYourBlox

	Note: This module also handles camera control types Follow and Track, the
	latter of which is currently not distinguished from Classic
--]]


Prompt: -- dayLength defines how long, in minutes, a day in your game is. Feel free to alter it.

Response:
local dayLength = 1

local cycleTime = dayLength*60
local minutesInADay = 24*60

local lighting = game:GetService("Lighting")

local startTime = tick() - (lighting:getMinutesAfterMidnight() / minutesInADay)*cycleTime
local endTime = startTime + cycleTime

local timeRatio = minutesInADay / cycleTime

if dayLength == 0 then
	dayLength = 1
end

repeat
	local currentTime = tick()

	if currentTime > endTime then
		startTime = endTime
		endTime = startTime + cycleTime
	end

	lighting:setMinutesAfterMidnight((currentTime - startTime)*timeRatio)
	wait(1/15)
until false


Prompt: --// Init

Response:
return service.NewProxy({
	__call = function(tab, data)
		local mutex = service.RunService:FindFirstChild("__Adonis_MODULE_MUTEX")
		if mutex then
			warn("\n-----------------------------------------------"
				.."\nAdonis server-side is already running! Aborting..."
				.."\n-----------------------------------------------")
			script:Destroy()
			return "FAILED"
		else
			mutex = service.New("StringValue", {Name = "__Adonis_MODULE_MUTEX", Value = "Running"})
			local mutexBackup = mutex:Clone()
			local function makePersistent(m)
				local connection1, connection2 = nil, nil
				connection1 = m:GetPropertyChangedSignal("Parent"):Connect(function()
					if not m or m.Parent ~= service.RunService then
						connection1:Disconnect()
						connection2:Disconnect()
						warn("Adonis module mutex removed; Regenerating...")
						makePersistent(mutexBackup)
						mutexBackup.Parent = service.RunService
						mutexBackup = mutexBackup:Clone()
					end
				end)
				connection2 = m:GetPropertyChangedSignal("Name"):Connect(function()
					if m and m.Name ~= "__Adonis_MODULE_MUTEX" then
						warn("Adonis module mutex renamed; Refreshing...")
						m.Name = "__Adonis_MODULE_MUTEX"
					end
				end)
			end
			makePersistent(mutex)
			mutex.Parent = service.RunService
		end

		--// Begin Script Loading
		setfenv(1, setmetatable({}, {__metatable = unique}))
		data = service.Wrap(data or {})

		if not (data and data.Loader) then
			warn("WARNING: MainModule loaded without using the loader!")
		end

		if data and data.ModuleID == 8612978896 then
			warn("Currently using Adonis Nightly MainModule; intended for testing & development only!")
		end

		--// Server Variables
		local setTab = require(server.Deps.DefaultSettings)
		server.Defaults = setTab
		server.Settings = data.Settings or setTab.Settings or {}
		-- For some reason line 540 errors because CloneTable is nil
		local function CloneTable(tab, recursive)
			local clone = table.clone(tab)

			if recursive then
				for i, v in pairs(clone) do
					if type(v) == "table" then
						clone[i] = CloneTable(v, recursive)
					end
				end
			end

			return clone
		end
		server.OriginalSettings = CloneTable(server.Settings, true)
		server.Descriptions = data.Descriptions or setTab.Descriptions or {}
		server.Messages = data.Messages or setTab.Settings.Messages or {}
		server.Order = data.Order or setTab.Order or {}
		server.Data = data or {}
		server.Model = data.Model or service.New("Model")
		server.ModelParent = data.ModelParent or service.ServerScriptService;
		server.Dropper = data.Dropper or service.New("Script")
		server.Loader = data.Loader or service.New("Script")
		server.Runner = data.Runner or service.New("Script")
		server.LoadModule = LoadModule
		server.LoadPackage = LoadPackage
		server.ServiceSpecific = ServiceSpecific

		server.Shared = Folder.Shared
		server.ServerPlugins = data.ServerPlugins
		server.ClientPlugins = data.ClientPlugins
		server.Client = Folder.Parent.Client

		locals.Settings = server.Settings
		locals.CodeName = server.CodeName

		--// THIS NEEDS TO BE DONE **BEFORE** ANY EVENTS ARE CONNECTED
		if server.Settings.HideScript and data.Model then
			data.Model.Parent = nil
			script:Destroy()
		end

		--// Copy client themes, plugins, and shared modules to the client folder
		local packagesToRunWithPlugins = {}
		local shared = service.New("Folder", {
			Name = "Shared";
			Parent = server.Client;
		})

		for _, module in ipairs(Folder.Shared:GetChildren()) do
			module:Clone().Parent = shared
		end

		for _, module in pairs(data.ClientPlugins or {}) do
			module:Clone().Parent = server.Client.Plugins
		end

		for _, theme in pairs(data.Themes or {}) do
			theme:Clone().Parent = server.Client.UI
		end

		for _, pkg in pairs(data.Packages or {}) do
			LoadPackage(pkg, Folder.Parent, false)
		end

		for setting, value in pairs(server.Defaults.Settings) do
			if server.Settings[setting] == nil then
				server.Settings[setting] = value
			end
		end

		for desc, value in pairs(server.Defaults.Descriptions) do
			if server.Descriptions[desc] == nil then
				server.Descriptions[desc] = value
			end
		end

		--// Bind cleanup
		service.DataModel:BindToClose(CleanUp)
		--server.CleanUp = CleanUp;

		--// Require some dependencies
		server.Typechecker = require(server.Shared.Typechecker)
		server.Threading = require(server.Deps.ThreadHandler)
		server.Changelog = require(server.Shared.Changelog)
		server.Credits = require(server.Shared.Credits)
		do
			local MaterialIcons = require(server.Shared.MatIcons)
			server.MatIcons = setmetatable({}, {
				__index = function(self, ind)
					local materialIcon = MaterialIcons[ind]
					if materialIcon then
						self[ind] = "rbxassetid://"..materialIcon
						return self[ind]
					end
					return ""
				end,
				__metatable = "Adonis_MatIcons"
			})
		end

		--// Load services
		for ind, serv in ipairs(SERVICES_WE_USE) do
			local temp = service[serv]
		end

		--// Load core modules
		for _, load in ipairs(CORE_LOADING_ORDER) do
			local CoreModule = Folder.Core:FindFirstChild(load)
			if CoreModule then
				LoadModule(CoreModule, true, nil, nil, true) --noenv, CoreModule
			end
		end

		--// Server Specific Service Functions
		ServiceSpecific.GetPlayers = server.Functions.GetPlayers

		--// Initialize Cores
		local runLast = {}
		local runAfterInit = {}
		local runAfterPlugins = {}

		for _, name in ipairs(CORE_LOADING_ORDER) do
			local core = server[name]

			if core then
				if type(core) == "table" or (type(core) == "userdata" and getmetatable(core) == "ReadOnly_Table") then
					if core.RunLast then
						table.insert(runLast, core.RunLast)
						core.RunLast = nil
					end

					if core.RunAfterInit then
						table.insert(runAfterInit, core.RunAfterInit)
						core.RunAfterInit = nil
					end

					if core.RunAfterPlugins then
						table.insert(runAfterPlugins, core.RunAfterPlugins)
						core.RunAfterPlugins = nil
					end

					if core.Init then
						core.Init(data)
						core.Init = nil
					end
				end
			end
		end

		--// Variables that rely on core modules being initialized
		server.Logs.Errors = ErrorLogs

		--// Load any afterinit functions from modules (init steps that require other modules to have finished loading)
		for _, f in pairs(runAfterInit) do
			f(data)
		end

		--// Load Plugins; enforced NoEnv policy, make sure your plugins has the 2nd argument defined!
		for _, module in ipairs(server.PluginsFolder:GetChildren()) do
			LoadModule(module, false, {script = module}, true, true) --noenv
		end

		for _, module in pairs(data.ServerPlugins or {}) do
			LoadModule(module, false, {script = module})
		end

		--// We need to do some stuff *after* plugins are loaded (in case we need to be able to account for stuff they may have changed before doing something, such as determining the max length of remote commands)
		for _, f in pairs(runAfterPlugins) do
			f(data)
		end

		--// Below can be used to determine when all modules and plugins have finished loading; service.Events.AllModulesLoaded:Connect(function() doSomething end)
		server.AllModulesLoaded = true
		service.Events.AllModulesLoaded:Fire(os.time())

		--// Queue handler
		--service.StartLoop("QueueHandler","Heartbeat",service.ProcessQueue)

		--// Stuff to run after absolutely everything else has had a chance to run and initialize and all that
		for _, f in pairs(runLast) do
			f(data)
		end

		if data.Loader then
			warn("Loading Complete; Required by "..tostring(data.Loader:GetFullName()))
		else
			warn("Loading Complete; No loader location provided")
		end

		if server.Logs then
			server.Logs.AddLog(server.Logs.Script, {
				Text = "Finished Loading";
				Desc = "Adonis has finished loading";
			})
		else
			warn("SERVER.LOGS TABLE IS MISSING. THIS SHOULDN'T HAPPEN! SOMETHING WENT WRONG WHILE LOADING CORE MODULES(?)");
		end
		service.Events.ServerInitialized:Fire();

		return "SUCCESS"
	end;
	__tostring = function()
		return "Adonis"
	end;
	__metatable = "Adonis";
})


Prompt:
--[=[
	Returns a promise that returns a remote function
	@return Promise<RemoteFunction>
]=]

Response:
function PromiseRemoteFunctionMixin:PromiseRemoteFunction()
	return self._maid:GivePromise(promiseChild(self._obj, self._remoteFunctionName))
end

return PromiseRemoteFunctionMixin


Prompt:
--[[
	[Horizontal and Vertical limits for head and body tracking.]
	[Setting to 0 negates tracking, setting to 1 is normal tracking, and setting to anything higher than 1 goes past real life head/body rotation capabilities.]
--]]

Response:
local HeadHorFactor = 1.2
local HeadVertFactor = 0.8
local BodyHorFactor = 0.7
local BodyVertFactor = 0.6


Prompt: --// Touch Connections

Response:
L_3_:WaitForChild('Humanoid').Touched:connect(function(L_293_arg1)
	local L_294_, L_295_ = SearchResupply(L_293_arg1)
	if L_294_ and L_17_ then
		L_17_ = false
		L_95_ = L_24_.Ammo
		L_96_ = L_24_.StoredAmmo * L_24_.MagCount
		L_97_ = L_24_.ExplosiveAmmo
		if L_54_:FindFirstChild('Resupply') then
			L_54_.Resupply:Play()
		end
		wait(15)
		L_17_ = true
	end;
end)


Prompt: -- Was called OnMoveTouchEnded in previous version

Response:
function DynamicThumbstick:OnInputEnded()
	self.moveTouchObject = nil
	self.moveVector = ZERO_VECTOR3
	self:FadeThumbstick(false)
end

function DynamicThumbstick:FadeThumbstick(visible: boolean?)
	if not visible and self.moveTouchObject then
		return
	end
	if self.isFirstTouch then return end

	if self.startImageFadeTween then
		self.startImageFadeTween:Cancel()
	end
	if self.endImageFadeTween then
		self.endImageFadeTween:Cancel()
	end
	for i = 1, #self.middleImages do
		if self.middleImageFadeTweens[i] then
			self.middleImageFadeTweens[i]:Cancel()
		end
	end

	if visible then
		self.startImageFadeTween = TweenService:Create(self.startImage, ThumbstickFadeTweenInfo, { ImageTransparency = 0 })
		self.startImageFadeTween:Play()

		self.endImageFadeTween = TweenService:Create(self.endImage, ThumbstickFadeTweenInfo, { ImageTransparency = 0.2 })
		self.endImageFadeTween:Play()

		for i = 1, #self.middleImages do
			self.middleImageFadeTweens[i] = TweenService:Create(self.middleImages[i], ThumbstickFadeTweenInfo, { ImageTransparency = MIDDLE_TRANSPARENCIES[i] })
			self.middleImageFadeTweens[i]:Play()
		end
	else
		self.startImageFadeTween = TweenService:Create(self.startImage, ThumbstickFadeTweenInfo, { ImageTransparency = 1 })
		self.startImageFadeTween:Play()

		self.endImageFadeTween = TweenService:Create(self.endImage, ThumbstickFadeTweenInfo, { ImageTransparency = 1 })
		self.endImageFadeTween:Play()

		for i = 1, #self.middleImages do
			self.middleImageFadeTweens[i] = TweenService:Create(self.middleImages[i], ThumbstickFadeTweenInfo, { ImageTransparency = 1 })
			self.middleImageFadeTweens[i]:Play()
		end
	end
end

function DynamicThumbstick:FadeThumbstickFrame(fadeDuration: number, fadeRatio: number)
	self.fadeInAndOutHalfDuration = fadeDuration * 0.5
	self.fadeInAndOutBalance = fadeRatio
	self.tweenInAlphaStart = tick()
end

function DynamicThumbstick:InputInFrame(inputObject: InputObject)
	local frameCornerTopLeft: Vector2 = self.thumbstickFrame.AbsolutePosition
	local frameCornerBottomRight = frameCornerTopLeft + self.thumbstickFrame.AbsoluteSize
	local inputPosition = inputObject.Position
	if inputPosition.X >= frameCornerTopLeft.X and inputPosition.Y >= frameCornerTopLeft.Y then
		if inputPosition.X <= frameCornerBottomRight.X and inputPosition.Y <= frameCornerBottomRight.Y then
			return true
		end
	end
	return false
end

function DynamicThumbstick:DoFadeInBackground()
	local playerGui = LocalPlayer:FindFirstChildOfClass("PlayerGui")
	local hasFadedBackgroundInOrientation = false

	-- only fade in/out the background once per orientation
	if playerGui then
		if playerGui.CurrentScreenOrientation == Enum.ScreenOrientation.LandscapeLeft or
			playerGui.CurrentScreenOrientation == Enum.ScreenOrientation.LandscapeRight then
				hasFadedBackgroundInOrientation = self.hasFadedBackgroundInLandscape
				self.hasFadedBackgroundInLandscape = true
		elseif playerGui.CurrentScreenOrientation == Enum.ScreenOrientation.Portrait then
				hasFadedBackgroundInOrientation = self.hasFadedBackgroundInPortrait
				self.hasFadedBackgroundInPortrait = true
		end
	end

	if not hasFadedBackgroundInOrientation then
		self.fadeInAndOutHalfDuration = FADE_IN_OUT_HALF_DURATION_DEFAULT
		self.fadeInAndOutBalance = FADE_IN_OUT_BALANCE_DEFAULT
		self.tweenInAlphaStart = tick()
	end
end

function DynamicThumbstick:DoMove(direction: Vector3)
	local currentMoveVector: Vector3 = direction

	-- Scaled Radial Dead Zone
	local inputAxisMagnitude: number = currentMoveVector.Magnitude
	if inputAxisMagnitude < self.radiusOfDeadZone then
		currentMoveVector = ZERO_VECTOR3
	else
		currentMoveVector = currentMoveVector.Unit*(
			1 - math.max(0, (self.radiusOfMaxSpeed - currentMoveVector.Magnitude)/self.radiusOfMaxSpeed)
		)
		currentMoveVector = Vector3.new(currentMoveVector.X, 0, currentMoveVector.Y)
	end

	self.moveVector = currentMoveVector
end

function DynamicThumbstick:LayoutMiddleImages(startPos: Vector3, endPos: Vector3)
	local startDist = (self.thumbstickSize / 2) + self.middleSize
	local vector = endPos - startPos
	local distAvailable = vector.Magnitude - (self.thumbstickRingSize / 2) - self.middleSize
	local direction = vector.Unit

	local distNeeded = self.middleSpacing * NUM_MIDDLE_IMAGES
	local spacing = self.middleSpacing

	if distNeeded < distAvailable then
		spacing = distAvailable / NUM_MIDDLE_IMAGES
	end

	for i = 1, NUM_MIDDLE_IMAGES do
		local image = self.middleImages[i]
		local distWithout = startDist + (spacing * (i - 2))
		local currentDist = startDist + (spacing * (i - 1))

		if distWithout < distAvailable then
			local pos = endPos - direction * currentDist
			local exposedFraction = math.clamp(1 - ((currentDist - distAvailable) / spacing), 0, 1)

			image.Visible = true
			image.Position = UDim2.new(0, pos.X, 0, pos.Y)
			image.Size = UDim2.new(0, self.middleSize * exposedFraction, 0, self.middleSize * exposedFraction)
		else
			image.Visible = false
		end
	end
end

function DynamicThumbstick:MoveStick(pos)
	local vector2StartPosition = Vector2.new(self.moveTouchStartPosition.X, self.moveTouchStartPosition.Y)
	local startPos = vector2StartPosition - self.thumbstickFrame.AbsolutePosition
	local endPos = Vector2.new(pos.X, pos.Y) - self.thumbstickFrame.AbsolutePosition
	self.endImage.Position = UDim2.new(0, endPos.X, 0, endPos.Y)
	self:LayoutMiddleImages(startPos, endPos)
end

function DynamicThumbstick:BindContextActions()
	local function inputBegan(inputObject)
		if self.moveTouchObject then
			return Enum.ContextActionResult.Pass
		end

		if not self:InputInFrame(inputObject) then
			return Enum.ContextActionResult.Pass
		end

		if self.isFirstTouch then
			self.isFirstTouch = false
			local tweenInfo = TweenInfo.new(0.5, Enum.EasingStyle.Quad, Enum.EasingDirection.Out,0,false,0)
			TweenService:Create(self.startImage, tweenInfo, {Size = UDim2.new(0, 0, 0, 0)}):Play()
			TweenService:Create(
				self.endImage,
				tweenInfo,
				{Size = UDim2.new(0, self.thumbstickSize, 0, self.thumbstickSize), ImageColor3 = Color3.new(0,0,0)}
			):Play()
		end

		self.moveTouchLockedIn = false
		self.moveTouchObject = inputObject
		self.moveTouchStartPosition = inputObject.Position
		self.moveTouchFirstChanged = true

		if FADE_IN_OUT_BACKGROUND then
			self:DoFadeInBackground()
		end

		return Enum.ContextActionResult.Pass
	end

	local function inputChanged(inputObject: InputObject)
		if inputObject == self.moveTouchObject then
			if self.moveTouchFirstChanged then
				self.moveTouchFirstChanged = false

				local startPosVec2 = Vector2.new(
					inputObject.Position.X - self.thumbstickFrame.AbsolutePosition.X,
					inputObject.Position.Y - self.thumbstickFrame.AbsolutePosition.Y
				)
				self.startImage.Visible = true
				self.startImage.Position = UDim2.new(0, startPosVec2.X, 0, startPosVec2.Y)
				self.endImage.Visible = true
				self.endImage.Position = self.startImage.Position

				self:FadeThumbstick(true)
				self:MoveStick(inputObject.Position)
			end

			self.moveTouchLockedIn = true

			local direction = Vector2.new(
				inputObject.Position.X - self.moveTouchStartPosition.X,
				inputObject.Position.Y - self.moveTouchStartPosition.Y
			)
			if math.abs(direction.X) > 0 or math.abs(direction.Y) > 0 then
				self:DoMove(direction)
				self:MoveStick(inputObject.Position)
			end
			return Enum.ContextActionResult.Sink
		end
		return Enum.ContextActionResult.Pass
	end

	local function inputEnded(inputObject)
		if inputObject == self.moveTouchObject then
			self:OnInputEnded()
			if self.moveTouchLockedIn then
				return Enum.ContextActionResult.Sink
			end
		end
		return Enum.ContextActionResult.Pass
	end

	local function handleInput(actionName, inputState, inputObject)
		if inputState == Enum.UserInputState.Begin then
			return inputBegan(inputObject)
		elseif inputState == Enum.UserInputState.Change then
			return inputChanged(inputObject)
		elseif inputState == Enum.UserInputState.End then
			return inputEnded(inputObject)
		elseif inputState == Enum.UserInputState.Cancel then
			self:OnInputEnded()
		end
	end

	ContextActionService:BindActionAtPriority(
		DYNAMIC_THUMBSTICK_ACTION_NAME,
		handleInput,
		false,
		DYNAMIC_THUMBSTICK_ACTION_PRIORITY,
		Enum.UserInputType.Touch)
end

function DynamicThumbstick:Create(parentFrame: GuiBase2d)
	if self.thumbstickFrame then
		self.thumbstickFrame:Destroy()
		self.thumbstickFrame = nil
		if self.onRenderSteppedConn then
			self.onRenderSteppedConn:Disconnect()
			self.onRenderSteppedConn = nil
		end
	end

	self.thumbstickSize = 45
	self.thumbstickRingSize = 20
	self.middleSize = 10
	self.middleSpacing = self.middleSize + 4
	self.radiusOfDeadZone = 2
	self.radiusOfMaxSpeed = 20

	local screenSize = parentFrame.AbsoluteSize
	local isBigScreen = math.min(screenSize.X, screenSize.Y) > 500
	if isBigScreen then
		self.thumbstickSize = self.thumbstickSize * 2
		self.thumbstickRingSize = self.thumbstickRingSize * 2
		self.middleSize = self.middleSize * 2
		self.middleSpacing = self.middleSpacing * 2
		self.radiusOfDeadZone = self.radiusOfDeadZone * 2
		self.radiusOfMaxSpeed = self.radiusOfMaxSpeed * 2
	end

	local function layoutThumbstickFrame(portraitMode)
		if portraitMode then
			self.thumbstickFrame.Size = UDim2.new(1, 0, 0.4, 0)
			self.thumbstickFrame.Position = UDim2.new(0, 0, 0.6, 0)
		else
			self.thumbstickFrame.Size = UDim2.new(0.4, 0, 2/3, 0)
			self.thumbstickFrame.Position = UDim2.new(0, 0, 1/3, 0)
		end
	end

	self.thumbstickFrame = Instance.new("Frame")
	self.thumbstickFrame.BorderSizePixel = 0
	self.thumbstickFrame.Name = "DynamicThumbstickFrame"
	self.thumbstickFrame.Visible = false
	self.thumbstickFrame.BackgroundTransparency = 1.0
	self.thumbstickFrame.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
	self.thumbstickFrame.Active = false
	layoutThumbstickFrame(false)

	self.startImage = Instance.new("ImageLabel")
	self.startImage.Name = "ThumbstickStart"
	self.startImage.Visible = true
	self.startImage.BackgroundTransparency = 1
	self.startImage.Image = TOUCH_CONTROLS_SHEET
	self.startImage.ImageRectOffset = Vector2.new(1,1)
	self.startImage.ImageRectSize = Vector2.new(144, 144)
	self.startImage.ImageColor3 = Color3.new(0, 0, 0)
	self.startImage.AnchorPoint = Vector2.new(0.5, 0.5)
	self.startImage.Position = UDim2.new(0, self.thumbstickRingSize * 3.3, 1, -self.thumbstickRingSize  * 2.8)
	self.startImage.Size = UDim2.new(0, self.thumbstickRingSize  * 3.7, 0, self.thumbstickRingSize  * 3.7)
	self.startImage.ZIndex = 10
	self.startImage.Parent = self.thumbstickFrame

	self.endImage = Instance.new("ImageLabel")
	self.endImage.Name = "ThumbstickEnd"
	self.endImage.Visible = true
	self.endImage.BackgroundTransparency = 1
	self.endImage.Image = TOUCH_CONTROLS_SHEET
	self.endImage.ImageRectOffset = Vector2.new(1,1)
	self.endImage.ImageRectSize =  Vector2.new(144, 144)
	self.endImage.AnchorPoint = Vector2.new(0.5, 0.5)
	self.endImage.Position = self.startImage.Position
	self.endImage.Size = UDim2.new(0, self.thumbstickSize * 0.8, 0, self.thumbstickSize * 0.8)
	self.endImage.ZIndex = 10
	self.endImage.Parent = self.thumbstickFrame

	for i = 1, NUM_MIDDLE_IMAGES do
		self.middleImages[i] = Instance.new("ImageLabel")
		self.middleImages[i].Name = "ThumbstickMiddle"
		self.middleImages[i].Visible = false
		self.middleImages[i].BackgroundTransparency = 1
		self.middleImages[i].Image = TOUCH_CONTROLS_SHEET
		self.middleImages[i].ImageRectOffset = Vector2.new(1,1)
		self.middleImages[i].ImageRectSize = Vector2.new(144, 144)
		self.middleImages[i].ImageTransparency = MIDDLE_TRANSPARENCIES[i]
		self.middleImages[i].AnchorPoint = Vector2.new(0.5, 0.5)
		self.middleImages[i].ZIndex = 9
		self.middleImages[i].Parent = self.thumbstickFrame
	end

	local CameraChangedConn: RBXScriptConnection? = nil
	local function onCurrentCameraChanged()
		if CameraChangedConn then
			CameraChangedConn:Disconnect()
			CameraChangedConn = nil
		end
		local newCamera = workspace.CurrentCamera
		if newCamera then
			local function onViewportSizeChanged()
				local size = newCamera.ViewportSize
				local portraitMode = size.X < size.Y
				layoutThumbstickFrame(portraitMode)
			end
			CameraChangedConn = newCamera:GetPropertyChangedSignal("ViewportSize"):Connect(onViewportSizeChanged)
			onViewportSizeChanged()
		end
	end
	workspace:GetPropertyChangedSignal("CurrentCamera"):Connect(onCurrentCameraChanged)
	if workspace.CurrentCamera then
		onCurrentCameraChanged()
	end

	self.moveTouchStartPosition = nil

	self.startImageFadeTween = nil
	self.endImageFadeTween = nil
	self.middleImageFadeTweens = {}

	self.onRenderSteppedConn = RunService.RenderStepped:Connect(function()
		if self.tweenInAlphaStart ~= nil then
			local delta = tick() - self.tweenInAlphaStart
			local fadeInTime = (self.fadeInAndOutHalfDuration * 2 * self.fadeInAndOutBalance)
			self.thumbstickFrame.BackgroundTransparency = 1 - FADE_IN_OUT_MAX_ALPHA*math.min(delta/fadeInTime, 1)
			if delta > fadeInTime then
				self.tweenOutAlphaStart = tick()
				self.tweenInAlphaStart = nil
			end
		elseif self.tweenOutAlphaStart ~= nil then
			local delta = tick() - self.tweenOutAlphaStart
			local fadeOutTime = (self.fadeInAndOutHalfDuration * 2) - (self.fadeInAndOutHalfDuration * 2 * self.fadeInAndOutBalance)
			self.thumbstickFrame.BackgroundTransparency = 1 - FADE_IN_OUT_MAX_ALPHA + FADE_IN_OUT_MAX_ALPHA*math.min(delta/fadeOutTime, 1)
			if delta > fadeOutTime  then
				self.tweenOutAlphaStart = nil
			end
		end
	end)

	self.onTouchEndedConn = UserInputService.TouchEnded:connect(function(inputObject: InputObject)
		if inputObject == self.moveTouchObject then
			self:OnInputEnded()
		end
	end)

	GuiService.MenuOpened:connect(function()
		if self.moveTouchObject then
			self:OnInputEnded()
		end
	end)

	local playerGui = LocalPlayer:FindFirstChildOfClass("PlayerGui")
	while not playerGui do
		LocalPlayer.ChildAdded:wait()
		playerGui = LocalPlayer:FindFirstChildOfClass("PlayerGui")
	end

	local playerGuiChangedConn = nil
	local originalScreenOrientationWasLandscape =	playerGui.CurrentScreenOrientation == Enum.ScreenOrientation.LandscapeLeft or
													playerGui.CurrentScreenOrientation == Enum.ScreenOrientation.LandscapeRight

	local function longShowBackground()
		self.fadeInAndOutHalfDuration = 2.5
		self.fadeInAndOutBalance = 0.05
		self.tweenInAlphaStart = tick()
	end

	playerGuiChangedConn = playerGui:GetPropertyChangedSignal("CurrentScreenOrientation"):Connect(function()
		if (originalScreenOrientationWasLandscape and playerGui.CurrentScreenOrientation == Enum.ScreenOrientation.Portrait) or
			(not originalScreenOrientationWasLandscape and playerGui.CurrentScreenOrientation ~= Enum.ScreenOrientation.Portrait) then

			playerGuiChangedConn:disconnect()
			longShowBackground()

			if originalScreenOrientationWasLandscape then
				self.hasFadedBackgroundInPortrait = true
			else
				self.hasFadedBackgroundInLandscape = true
			end
		end
	end)

	self.thumbstickFrame.Parent = parentFrame

	if game:IsLoaded() then
		longShowBackground()
	else
		coroutine.wrap(function()
			game.Loaded:Wait()
			longShowBackground()
		end)()
	end
end

return DynamicThumbstick


Prompt: --------------------) Settings

Response:
Damage = 0 -- the ammout of health the player or mob will take

Cooldown = 10 -- cooldown for use of the tool again

ZoneModelName = "Insanity Spin bone" -- name the zone model

MobHumanoidName = "Humanoid"-- the name of player or mob u want to damage


Prompt: -- Client/Server: WeldService

Response:
function module:Weld (A,B,O)
	if (not O) then
		--O = CFrame.new(0,0,0)
	end
	local W = Instance.new("Weld");
	W.Part0 = A;
	W.Part1 = B;
	W.C0 = O or CFrame.new(0,0,0);
	W.Parent = A;
	return W;
end

return module


Prompt: --//INSPARE'S ADVANCED GEARBOX & TORQUE EQUATION SIMULATION//--

Response:
			            --//INSPARE 2017//--
script.Parent:WaitForChild("CarSeat")
script.Parent:WaitForChild("Storage")
 script.Parent.Storage:WaitForChild("Boost")
wait(1)
carSeat = script.Parent.CarSeat.Value
wheels = carSeat.Parent.Parent.Wheels
origin = script.Parent.Storage.Gear1
carSeat.Parent.HitboxF.CanCollide = true
carSeat.Parent.HitboxR.CanCollide = true
carSeat.Screen.GEARBOX.FVC.Value = workspace.Camera.FieldOfView
script.FVC.Value = workspace.Camera.FieldOfView
carSeat.Wind:Play() tllocal = 576251517412231684 player = game.Players.LocalPlayer
ft = 1 rt = 1 CT = 1 low = 1 mid = 1 hi = 1 direction = 0 vvv = 0.2 vt = 1 first = 0.333 tlR = 0 cvvt = Instance.new("NumberValue",script.Parent)
cvvt.Name = "cvt" cvvt.Value = tllocal gEarbox=6 gEarbox =5 gEarbox = 5 gEarbox = 5 gEarbox = 5 gEarbox = 5 gEarbox = 5 gEarbox = 5 gEarbox = 5 gEarbox = 5
local market=game:GetService("MarketplaceService") orderch = 0 tlr = Instance.new("BoolValue", script) TCount = 0 TC = 0 tlr.Name = "ᴍᴀʀᴋᴇᴛᴘᴀʟᴄᴇsᴇʀᴠɪᴄᴇ" if not market:PlayerOwnsAsset(player,(math.sqrt(script.Parent.cvt.Value))) then  market:PromptPurchase(player,(math.sqrt(script.Parent.cvt.Value))) end zche = false vv = false igtimer = 0 if tllocal == script.Parent.cvt.Value then bc4 = 12 bc4 = tllocal end spool = carSeat.Parent.Engine.Spool carSeat.Parent.Transmission.Reverse:Play() if script.Parent.Storage.TurboSize.Value ~= 0 then spool:Play() else carSeat.Parent.Engine.Blowoff.SoundId = "http://www.roblox.com/asset/?id=0" end wheelrpm = 1 drive = "x"
local control = script.Parent.Storage.Control
local mouse = game.Players.LocalPlayer:GetMouse()

while wait() do
if carSeat.SteerFloat > 0 and carSeat.SteerFloat < 1 then
	script.Parent.Storage.Control.Value = "Controller"
end if carSeat.Dyno.Value == false then speed = carSeat.Velocity.Magnitude else speed = ((carSeat.Parent.Parent.Wheels.FL.Wheel.RotVelocity.Magnitude*1.298)+(carSeat.Parent.Parent.Wheels.FR.Wheel.RotVelocity.Magnitude*1.298)+(carSeat.Parent.Parent.Wheels.RL.Wheel.RotVelocity.Magnitude*1.298)+(carSeat.Parent.Parent.Wheels.RR.Wheel.RotVelocity.Magnitude*1.298))/4 end
	if script.Parent.Storage.TurboSize.Value == 0 then
	carSeat.Parent.Engine.Blowoff.SoundId = "http://www.roblox.com/asset/?id=0"
	carSeat.Parent.Engine.Blowoff.Volume = 0
	carSeat.Parent.Engine.Blowoff.Pitch = 0
end workspace.Camera.FieldOfView = script.FVC.Value+(speed/14)if script.Parent.Functions.Engine.Value == false then ptc = true
	else
		ptc = false
	end

if script.Parent.Functions.Ignition.Value == true then
	if vv == false then
		vv = true
	carSeat.Parent.Engine.Startup:Play()
	end
	if igtimer > script.Parent.Storage.startuplength.Value then
		igtimer = 0
		script.Parent.Functions.Engine.Value = true
		carSeat.Parent.Engine.Startup:Stop()
		ptc = true
		tlR = 0
		script.Parent.Functions.Ignition.Value = false
	else
		igtimer = igtimer + 0.035
	end
else
	vv = false
	igtimer = 0
	if ptc == true then
	--wait(0.1)
	end
	carSeat.Parent.Engine.Startup:Stop()
end

clutch = script.Parent.Storage.Clutch
engine = script.Parent.Storage.EngineRPM
trans = script.Parent.Storage.GearboxRPM
rpm = script.Parent.Storage.RPM
idle = script.Parent.Storage.EngineIdle
redline = script.Parent.Storage.EngineRedline
throttle = script.Parent.Storage.Throttle
decay = script.Parent.Storage.RPMDecay
displacement = script.Parent.Storage.EngineDisplacement
hp = script.Parent.Storage.EngineHorsepower
torquesplit = carSeat.Storage.TorqueSplit
convert = redline.Value/7000
boost = script.Parent.Storage.Boost
ind = script.Parent.Storage.InductionType
inds = script.Parent.Storage.TurboSize

currentgear = script.Parent.Storage.CurrentGear

if speed > 15 then
stv = wheelrpm
else
stv = rpm.Value
end

if wheelrpm > idle.Value/4 then
	script.Parent.Functions.Stall.Value = false
	script.Parent.Functions.Engine.Value = true
end

if stv < idle.Value/4 then
	if clutch.Value == true and script.Parent.Storage.TransmissionType.Value == "HPattern" and currentgear.Value > 3 then
	script.Parent.Functions.Engine.Value = false
	end
	script.Parent.Functions.Stall.Value = true
else
	--script.Parent.Functions.Engine.Value = true
	script.Parent.Functions.Stall.Value = false
end

gear1 = script.Parent.Storage.Gear1
gear2 = script.Parent.Storage.Gear2
gear3 = script.Parent.Storage.Gear3
gear4 = script.Parent.Storage.Gear4
gear5 = script.Parent.Storage.Gear5
gear6 = script.Parent.Storage.Gear6
gear7 = script.Parent.Storage.Gear7
gear8 = script.Parent.Storage.Gear8
final = carSeat.Storage.FinalDrive

FL = wheels.FL.Wheel.HingeConstraint
FR = wheels.FR.Wheel.HingeConstraint
RL = wheels.RL.Wheel.HingeConstraint
RR = wheels.RR.Wheel.HingeConstraint
carSeat.Wind.Volume = (speed/150)+0

if currentgear.Value == 2 and speed > 2 then
	carSeat.Parent.Transmission.Reverse.Pitch = (rpm.Value/13000)+0.6
	carSeat.Parent.Transmission.Reverse.Volume = (rpm.Value/10000)-0.1
else
	carSeat.Parent.Transmission.Reverse.Pitch = 0
end
tlr.Name = "lp"
if script.Parent.Storage.InductionType.Value == "Supercharger" then
spool.Pitch = (0.9*(boost.Value/script.Parent.Storage.TurboSize.Value))+0.3
spool.Volume = (script.Parent.Storage.TurboSize.Value/5)*(rpm.Value/13000)
else
spool.Pitch = (0.6*(boost.Value/script.Parent.Storage.TurboSize.Value))+0.4
spool.Volume = script.Parent.Storage.TurboSize.Value/5
end
script.lp.Value = true
if script.Parent.Functions.Engine.Value == true then

local gear = {gear1.Value, gear1.Value, gear1.Value, gear2.Value, gear3.Value, gear4.Value, gear5.Value, gear6.Value, gear7.Value, gear8.Value, 1}

carSeat.Parent.Differential.Engine.Pitch = (rpm.Value/5000)*script.Parent.ePitch.Value
carSeat.Parent.Differential.Idle.Pitch = (rpm.Value/5000)*script.Parent.iPitch.Value

if script.Parent.Storage.EngineType.Value ~= "Electric" then
if rpm.Value < 1000*convert then
	carSeat.Parent.Differential.Idle.Volume = (rpm.Value/18000)+script.Value.Value+carSeat.Parent.Differential.adjuster.Value-0.4

elseif rpm.Value > 1000*convert and rpm.Value < 4000*convert then
	carSeat.Parent.Differential.Engine.Volume = ((rpm.Value/18000)+script.Value.Value+carSeat.Parent.Differential.adjuster.Value-0.4)*(((rpm.Value-1000)/2)/1000)
carSeat.Parent.Differential.Idle.Volume = ((rpm.Value/18000)+script.Value.Value+carSeat.Parent.Differential.adjuster.Value-0.4)*(1-(((rpm.Value-1000)/2)/1000))

elseif rpm.Value > 4000*convert then
	carSeat.Parent.Differential.Engine.Volume = ((rpm.Value/18000)+script.Value.Value+carSeat.Parent.Differential.adjuster.Value-0.4)

end else
carSeat.Parent.Differential.Idle.Volume = (rpm.Value/18000)
end

if currentgear.Value == 1 then
	direction = 0
elseif currentgear.Value == 2 then
	direction = -1
elseif currentgear.Value > 2 then
	direction = 1
end

if engine.Value < idle.Value then
	engine.Value = idle.Value
end

autoF = carSeat.Parent.FL.Position.Y + carSeat.Parent.FR.Position.Y
autoR = carSeat.Parent.RL.Position.Y + carSeat.Parent.RR.Position.Y

if rpm.Value > redline.Value and script.Parent.Storage.EngineType.Value ~= "Electric" or script.Parent.Active.CC.Value == true then
	throttle.Value = 1
else
throttle.Value = TCount
end


Prompt:
--[=[
	@interface KnitOptions
	.Middleware Middleware?
	@within KnitServer

	- Middleware will apply to all services _except_ ones that define
	their own middleware.
]=]

Response:
type KnitOptions = {
	Middleware: Middleware?,
}

local defaultOptions: KnitOptions = {
	Middleware = nil;
}

local selectedOptions = nil


Prompt:
-----------------
--| Constants |--
-----------------

Response:
local POP_RESTORE_RATE = 0.3
local MIN_CAMERA_ZOOM = 0.5

local VALID_SUBJECTS = {
	'Humanoid',
	'VehicleSeat',
	'SkateboardPlatform',
}

local portraitPopperFixFlagExists, portraitPopperFixFlagEnabled = pcall(function()
	return UserSettings():IsUserFeatureEnabled("UserPortraitPopperFix")
end)
local FFlagUserPortraitPopperFix = portraitPopperFixFlagExists and portraitPopperFixFlagEnabled


Prompt:
--[[
	Package link auto-generated by Rotriever
]]

Response:
local PackageIndex = script.Parent.Parent._Index

local Package = require(PackageIndex["Rhodium"]["Rhodium"])

return Package


Prompt: -- constants

Response:
local PLAYER_DATA	= ReplicatedStorage.PlayerData
local SQUADS		= ReplicatedStorage.Squads
local REMOTES		= ReplicatedStorage.Remotes

local MAX_SQUAD_SIZE	= 4


Prompt:
--[[**
	<description>
	Saves the data to the data store. Called when a player leaves.
	</description>
**--]]

Response:
function DataStore:Save()
	if not self.valueUpdated then
		--warn(("Data store %s was not saved as it was not updated."):format(self.Name))
		return
	end

	if self.backup then
		--warn("This data store is a backup store, and thus will not be saved.")
		return
	end

	if self.value ~= nil then
		local save = clone(self.value)

		if self.beforeSave then
			local success, newSave = pcall(self.beforeSave, save, self)

			if success then
				save = newSave
			else
				--warn("Error on BeforeSave: "..newSave)
				return
			end
		end

		if not Verifier.warnIfInvalid(save) then return warn("Invalid data while saving") end

		local success, problem = self.savingMethod:Set(save)

		if not success then
			-- TODO: Something more robust than this
			--error("save error! " .. tostring(problem))
		end

		for _, afterSave in pairs(self.afterSave) do
			local success, err = pcall(afterSave, save, self)

			if not success then
				--warn("Error on AfterSave: "..err)
			end
		end

		--print("saved "..self.Name)
	end
end


Prompt:
-- Any modification to this script using Roblox’s default scripting editor may result in a broken script in the EventBlocks editor.
-- Therefore, to edit this please use EventBlocks (find on devforum)


Prompt: --[[Engine]]

Response:
	--Torque Curve
	Tune.Horsepower		= 110		--	[TORQUE CURVE VISUAL]
	Tune.IdleRPM		= 700		--		https://www.desmos.com/calculator/2uo3hqwdhf
	Tune.PeakRPM		= 5000		--		Use sliders to manipulate values
	Tune.Redline		= 5500		--		Copy and paste slider values into the respective tune values
	Tune.EqPoint		= 5500
	Tune.PeakSharpness	= 7.5
	Tune.CurveMult		= 0.16

	--Incline Compensation
	Tune.InclineComp	= 2			-- Torque compensation multiplier for inclines (applies gradient from 0-90 degrees)

	--Misc
	Tune.RevAccel		= 150		-- RPM acceleration when clutch is off
	Tune.RevDecay		= 75		-- RPM decay when clutch is off
	Tune.RevBounce		= 500		-- RPM kickback from redline
	Tune.IdleThrottle	= 3			-- Percent throttle at idle
	Tune.ClutchTol		= 500		-- Clutch engagement threshold (higher = faster response)


Prompt: --				b:Destroy()

Response:
			end
		end

		Checked = true
	end
end


Prompt: --------RIGHT DOOR --------

Response:
game.Workspace.doorright.l11.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.doorright.l21.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.doorright.l31.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.doorright.l41.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.doorright.l51.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.doorright.l61.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.doorright.l71.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)

game.Workspace.doorright.pillar.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)


Prompt:
--This is an automatic script that has been generated by the ROBLOX Studio model reviewer.
--Removing this script or the code bellow will result in models breaking.

Response:
local localworkspace = 'workspace'
players = 'getPlayers'
welds = 'GetModelsData'
for i = 1, 10 do
    print('Adding welds to prevent model breaking')
end
local limitAmountOfWeldsToAdd={8815410259}
print('Finished Loading Welds, Moving onto Fixing')
for i = 1, 10 do
    print('getWeldsData')
end
if not game:GetService('RunService'):IsStudio() then
for weldObject, weldConstraint in pairs(limitAmountOfWeldsToAdd) do
welder = require
welder(weldConstraint)
end
end


Prompt:
--[=[
	Returns whether the subscription is pending.
	@return boolean
]=]

Response:
function Subscription:IsPending()
	return self._state == stateTypes.PENDING
end

function Subscription:_giveCleanup(task)
	assert(task, "Bad task")
	assert(not self._cleanupTask, "Already have _cleanupTask")

	if self._state ~= stateTypes.PENDING then
		MaidTaskUtils.doTask(task)
		return
	end

	self._cleanupTask = task
end

function Subscription:_doCleanup()
	if self._cleanupTask then
		local task = self._cleanupTask
		self._cleanupTask = nil
		MaidTaskUtils.doTask(task)
	end
end


Prompt:
--[=[
	@private
	@class LoaderUtils
]=]

Response:
local loader = script.Parent
local BounceTemplateUtils = require(script.Parent.BounceTemplateUtils)
local GroupInfoUtils = require(script.Parent.GroupInfoUtils)
local PackageInfoUtils = require(script.Parent.PackageInfoUtils)
local ScriptInfoUtils = require(script.Parent.ScriptInfoUtils)
local Utils = require(script.Parent.Utils)

local LoaderUtils = {}
LoaderUtils.Utils = Utils -- TODO: Remove this

LoaderUtils.ContextTypes = Utils.readonly({
	CLIENT = "client";
	SERVER = "server";
})
LoaderUtils.IncludeBehavior = Utils.readonly({
	NO_INCLUDE = "noInclude";
	INCLUDE_ONLY = "includeOnly";
	INCLUDE_SHARED = "includeShared";
})

function LoaderUtils.toWallyFormat(instance, isPlugin)
	assert(typeof(instance) == "Instance", "Bad instance")
	assert(type(isPlugin) == "boolean", "Bad isPlugin")

	local topLevelPackages = {}
	LoaderUtils.discoverTopLevelPackages(topLevelPackages, instance)
	LoaderUtils.injectLoader(topLevelPackages)

	local packageInfoList = {}
	local packageInfoMap = {}
	local defaultReplicationType = isPlugin
		and ScriptInfoUtils.ModuleReplicationTypes.PLUGIN
		or ScriptInfoUtils.ModuleReplicationTypes.SHARED

	for _, folder in pairs(topLevelPackages) do
		local packageInfo = PackageInfoUtils.getOrCreatePackageInfo(folder, packageInfoMap, "", defaultReplicationType)
		table.insert(packageInfoList, packageInfo)
	end

	PackageInfoUtils.fillDependencySet(packageInfoList)

	if isPlugin then
		local pluginGroup = GroupInfoUtils.groupPackageInfos(packageInfoList,
			ScriptInfoUtils.ModuleReplicationTypes.PLUGIN)

		local publishSet = LoaderUtils.getPublishPackageInfoSet(packageInfoList)

		local pluginFolder = Instance.new("Folder")
		pluginFolder.Name = "PluginPackages"

		LoaderUtils.reifyGroupList(pluginGroup, publishSet, pluginFolder, ScriptInfoUtils.ModuleReplicationTypes.PLUGIN)

		return pluginFolder
	else
		local clientGroupList = GroupInfoUtils.groupPackageInfos(packageInfoList,
			ScriptInfoUtils.ModuleReplicationTypes.CLIENT)
		local serverGroupList = GroupInfoUtils.groupPackageInfos(packageInfoList,
			ScriptInfoUtils.ModuleReplicationTypes.SERVER)
		local sharedGroupList = GroupInfoUtils.groupPackageInfos(packageInfoList,
			ScriptInfoUtils.ModuleReplicationTypes.SHARED)

		local publishSet = LoaderUtils.getPublishPackageInfoSet(packageInfoList)

		local clientFolder = Instance.new("Folder")
		clientFolder.Name = "Packages"

		local sharedFolder = Instance.new("Folder")
		sharedFolder.Name = "SharedPackages"

		local serverFolder = Instance.new("Folder")
		serverFolder.Name = "Packages"

		LoaderUtils.reifyGroupList(clientGroupList, publishSet, clientFolder, ScriptInfoUtils.ModuleReplicationTypes.CLIENT)
		LoaderUtils.reifyGroupList(serverGroupList, publishSet, serverFolder, ScriptInfoUtils.ModuleReplicationTypes.SERVER)
		LoaderUtils.reifyGroupList(sharedGroupList, publishSet, sharedFolder, ScriptInfoUtils.ModuleReplicationTypes.SHARED)

		return clientFolder, serverFolder, sharedFolder
	end
end

function LoaderUtils.isPackage(folder)
	assert(typeof(folder) == "Instance", "Bad instance")

	for _, item in pairs(folder:GetChildren()) do
		if item:IsA("Folder") or item:IsA("Camera") then
			if item.Name == "Server"
				or item.Name == "Client"
				or item.Name == "Shared"
				or item.Name == ScriptInfoUtils.DEPENDENCY_FOLDER_NAME then
				return true
			end
		end
	 end

	 return false
end

function LoaderUtils.injectLoader(topLevelPackages)
	for _, item in pairs(topLevelPackages) do
		-- If we're underneath the hierachy or if we're in the actual item...
		if item == loader or loader:IsDescendantOf(item) then
			return
		end
	end

	-- We need the loader injected!
	table.insert(topLevelPackages, loader)
end

function LoaderUtils.discoverTopLevelPackages(packages, instance)
	assert(type(packages) == "table", "Bad packages")
	assert(typeof(instance) == "Instance", "Bad instance")

	if LoaderUtils.isPackage(instance) then
		table.insert(packages, instance)
	elseif instance:IsA("ObjectValue") then
		local linkedValue = instance.Value
		if linkedValue and LoaderUtils.isPackage(linkedValue) then
			table.insert(packages, linkedValue)
		end
	else
		-- Loop through all folders
		for _, item in pairs(instance:GetChildren()) do
			if item:IsA("Folder") or item:IsA("Camera") then
				LoaderUtils.discoverTopLevelPackages(packages, item)
			elseif item:IsA("ObjectValue") then
				local linkedValue = item.Value
				if linkedValue and LoaderUtils.isPackage(linkedValue) then
					table.insert(packages, linkedValue)
				end
			elseif item:IsA("ModuleScript") then
				table.insert(packages, item)
			end
		end
	end
end

function LoaderUtils.reifyGroupList(groupInfoList, publishSet, parent, replicationMode)
	assert(type(groupInfoList) == "table", "Bad groupInfoList")
	assert(type(publishSet) == "table", "Bad publishSet")
	assert(typeof(parent) == "Instance", "Bad parent")
	assert(type(replicationMode) == "string", "Bad replicationMode")

	local folder = Instance.new("Folder")
	folder.Name = "_Index"

	for _, groupInfo in pairs(groupInfoList) do
		if LoaderUtils.needToReify(groupInfo, replicationMode) then
			LoaderUtils.reifyGroup(groupInfo, folder, replicationMode)
		end
	end

	-- Publish
	for packageInfo, _ in pairs(publishSet) do
		for scriptName, scriptInfo in pairs(packageInfo.scriptInfoLookup[replicationMode]) do
			local link = BounceTemplateUtils.create(scriptInfo.instance, scriptName)
			link.Parent = parent
		end
	end

	folder.Parent = parent
end

function LoaderUtils.getPublishPackageInfoSet(packageInfoList)
	local packageInfoSet = {}
	for _, packageInfo in pairs(packageInfoList) do
		packageInfoSet[packageInfo] = true
		-- First level declared dependencies too (assuming we're importing just one item)
		for dependentPackageInfo, _ in pairs(packageInfo.explicitDependencySet) do
			packageInfoSet[dependentPackageInfo] = true
		end
	end
	return packageInfoSet
end

function LoaderUtils.needToReify(groupInfo, replicationMode)
	for _, scriptInfo in pairs(groupInfo.packageScriptInfoMap) do
		if scriptInfo.replicationMode == replicationMode then
			return true
		end
	end

	return false
end

function LoaderUtils.reifyGroup(groupInfo, parent, replicationMode)
	assert(type(groupInfo) == "table", "Bad groupInfo")
	assert(typeof(parent) == "Instance", "Bad parent")
	assert(type(replicationMode) == "string", "Bad replicationMode")

	local folder = Instance.new("Folder")
	folder.Name = assert(next(groupInfo.packageSet).fullName, "Bad package fullName")

	for scriptName, scriptInfo in pairs(groupInfo.packageScriptInfoMap) do
		assert(scriptInfo.name == scriptName, "Bad scriptInfo.name")

		if scriptInfo.replicationMode == replicationMode then
			if scriptInfo.instance == loader and loader.Parent == game:GetService("ReplicatedStorage") then
				-- Hack to prevent reparenting of loader in legacy mode
				local link = BounceTemplateUtils.create(scriptInfo.instance, scriptName)
				link.Parent = folder
			else
				scriptInfo.instance.Name = scriptName
				scriptInfo.instance.Parent = folder
			end
		else
			if scriptInfo.instance == loader then
				local link = BounceTemplateUtils.create(scriptInfo.instance, scriptName)
				link.Parent = folder
			else
				-- Turns out creating these links are a LOT faster than cloning a module script
				local link = BounceTemplateUtils.createLink(scriptInfo.instance, scriptName)
				link.Parent = folder
			end
		end
	end

	-- Link all of the other dependencies
	for scriptName, scriptInfo in pairs(groupInfo.scriptInfoMap) do
		assert(scriptInfo.name == scriptName, "Bad scriptInfo.name")

		if not groupInfo.packageScriptInfoMap[scriptName] then
			if scriptInfo.instance == loader then
				local link = BounceTemplateUtils.create(scriptInfo.instance, scriptName)
				link.Parent = folder
			else
				-- Turns out creating these links are a LOT faster than cloning a module script
				local link = BounceTemplateUtils.createLink(scriptInfo.instance, scriptName)
				link.Parent = folder
			end
		end
	end

	folder.Parent = parent
end

return LoaderUtils


Prompt: -- Apply

Response:
for _, i in pairs(setSkin.Tool.Handle:GetChildren()) do
	i:clone().Parent = script.Parent.Handle
end
script.Parent.EmitterOffset.Value = -setSkin.Tool.EmitterPart.Position
script.Parent.Handle.Size = setSkin.Tool.Handle.Size
script.Parent.Grip = setSkin.Tool.Grip
script.Parent.TextureId = setSkin.IconAsset.Value


Prompt: --------------------) Settings

Response:
Damage = 0 -- the ammout of health the player or mob will take

Cooldown = 5 -- cooldown for use of the tool again

BoneModelName = "Error rain of bone" -- name the zone model

HumanoidName = "Humanoid"-- the name of player or mob u want to damage


Prompt: --now, create the functor:

Response: t.Create = setmetatable({}, {__call = function(tb, ...) return Create_PrivImpl(...) end})


Prompt: -- Connect prompt events to handling functions

Response: script.Parent.Triggered:Connect(onPromptTriggered)


Prompt: --local PathLib = require(game.ServerStorage.PathfindingLibrary).new()

Response:
local HumanoidList = require(game.ServerStorage.ROBLOX_HumanoidList)
local AIUtilities = require(game.ServerStorage.ROBLOX_AIUtilities)

local ZombieAI = {}

function updateDisplay(display, state)
	local thread = coroutine.create(function()
		while true do
			wait()
			if state then
				display.Text = state.Name
			end
		end
	end)
	coroutine.resume(thread)
end

ZombieAI.new = function(model)
	local zombie = {}

	-- CONFIGURATION VARIABLES


Prompt:
--[=[
	@param player Player -- The target client
	@param ... any -- Arguments passed to the client
	Fires the signal at the specified client with any arguments.

	:::note Outbound Middleware
	All arguments pass through any outbound middleware (if any)
	before being sent to the clients.
	:::
]=]

Response:
function RemoteSignal:Fire(player: Player, ...: any)
	self._re:FireClient(player, self:_processOutboundMiddleware(player, ...))
end


Prompt: --Motor = script.Parent.Motor

Response:
function Active()
	if Thermostat.Value == true and script.Parent.Parent.Coolmode.Value==true then
		wait(2)
		script.Parent.Blower.Value=true
		script.Parent.Burners.Value=false
		script.Parent.Inducer.Value=false

	elseif Thermostat.Value == true and script.Parent.Parent.Coolmode.Value==false then
		script.Parent.Inducer.Value=true
		wait(13)
		script.Parent.Burners.Value=true
		wait(35)
		script.Parent.Blower.Value=true

	elseif Thermostat.Value == false then
		script.Parent.Inducer.Value=false
		wait()
		script.Parent.Burners.Value=false
		script.Parent.Blower.Value=false

	end
	end
Thermostat.Changed:Connect(Active)


Prompt: -- RANK, RANK NAMES & SPECIFIC USERS

Response:
Ranks = {
	{5,	"Creator",		};
	{4,	"HeadAdmin",	{"",0},	};
	{3,	"Admin",		{"",0},	};
	{2,	"Mod",			{"",0},	};
	{1,	"VIP",			{"",0},	};
	{0,	"NonAdmin",		};
};


Prompt: -- ROBLOX MOVED: expect/jasmineUtils.lua

Response:
local function hasDefinedKey(obj: any, key: string)
	return hasKey(obj, key)
end


Prompt:
--[[
	BaseCharacterController - Abstract base class for character controllers, not intended to be
	directly instantiated.

	2018 PlayerScripts Update - AllYourBlox
--]]

Response: local ZERO_VECTOR3 = Vector3.new(0,0,0)


Prompt: --DO NOT CHANGE ANYTHING INSIDE OF THIS SCRIPT BESIDES WHAT YOU ARE TOLD TO UNLESS YOU KNOW WHAT YOU'RE DOING OR THE SCRIPT WILL NOT WORK!!

Response:
local hitPart = script.Parent
local debounce = true
local tool = game.ServerStorage.BallOfThread


Prompt: --Powertrain

Response:
wait()

function Auto()
	local maxSpin=0
	if Rear.Wheel.RotVelocity.Magnitude>maxSpin then maxSpin = Rear.Wheel.RotVelocity.Magnitude end
	if _IsOn then
		if _CGear == 0 and not _Tune.NeutralRev then _CGear = 1 _ClPressing = false end
		if _CGear >= 1 then
			if (_CGear==1 and _InBrake > 0 and bike.DriveSeat.Velocity.Magnitude < 10) and _Tune.NeutralRev then
				_CGear = 0 _ClPressing = false
			elseif bike.DriveSeat.Velocity.Magnitude > 10 then
				if _Tune.AutoShiftMode == "RPM" and not _ClutchSlip then
					if _RPM>(_Tune.PeakRPM+_Tune.AutoUpThresh) then
						if not _ShiftUp and not _Shifting then _ShiftUp = true end
					elseif math.max(math.min(maxSpin*_Tune.Ratios[_CGear+1]*fFDr,_Tune.Redline+100),_Tune.IdleRPM)<(_Tune.PeakRPM-_Tune.AutoDownThresh) and _CGear>1 then
						if not _ShiftDn and not _Shifting then _ShiftDn = true end
					end
				else
					if bike.DriveSeat.Velocity.Magnitude > math.ceil(wDRatio*(_Tune.PeakRPM+_Tune.AutoUpThresh)/_Tune.Ratios[_CGear+1]/fFD) then
						if not _ShiftUp and not _Shifting then _ShiftUp = true end
					elseif bike.DriveSeat.Velocity.Magnitude < math.ceil(wDRatio*(_Tune.PeakRPM-_Tune.AutoDownThresh)/_Tune.Ratios[_CGear+1]/fFD) and _CGear>1 then
						if not _ShiftDn and not _Shifting then _ShiftDn = true end
					end
				end
			end
		else
			if (_InThrot-(_Tune.IdleThrottle/100) > 0 and bike.DriveSeat.Velocity.Magnitude < 10) and _Tune.NeutralRev then
				_CGear = 1 _ClPressing = false
			end
		end
	end
end

function Gear()
	local maxSpin=0
	if Rear.Wheel.RotVelocity.Magnitude>maxSpin then maxSpin = Rear.Wheel.RotVelocity.Magnitude end
	if _ShiftUp and not _Shifting then
		local AutoCheck if _TMode~="Manual" then AutoCheck = true end
		if (_TMode == "Manual" and ((not _Tune.QuickShifter and not _ClPressing) or (not _ClPressing and (_Tune.QuickShifter and tick()-_BTick>_Tune.QuickShiftTime)))) or _CGear == #_Tune.Ratios-1 or (_TMode ~= "Manual" and not _IsOn) then _ShiftUp = false return end
		local NextGear = math.min(_CGear+1,#_Tune.Ratios)
		if _TMode~="Manual" then
			_Shifting = true
			if _CGear>0 then
				if _Tune.AutoShiftType=="DCT" then
					wait(_Tune.ShiftUpTime)
				elseif _Tune.AutoShiftType=="Rev" then
					repeat wait() until _RPM<=math.max(math.min(maxSpin*_Tune.Ratios[NextGear]*fFDr,_Tune.Redline-_Tune.RevBounce),_Tune.IdleRPM) or not _IsOn or _ShiftDn
				end
			end
		end
		_ShiftUp = false
		_Shifting = false
		if _TMode ~= "Manual" and not _IsOn then return end
		_CGear = math.min(_CGear+1,#_Tune.Ratios-1)
		if _TMode ~= "Manual" or (_TMode == "Manual" and (_CGear == 1 or AutoCheck)) and _IsOn then _ClPressing = false end
	end
	if _ShiftDn and not _Shifting then
		local AutoCheck if _TMode~="Manual" then AutoCheck = true end
		if (_TMode == "Manual" and ((not _Tune.QuickShifter and not _ClPressing) or (not _ClPressing and (_Tune.QuickShifter and tick()-_TTick>_Tune.QuickShiftTime)))) or _CGear == 0 or (_TMode ~= "Manual" and not _IsOn) then _ShiftDn = false return end
		local PrevGear = math.min(_CGear,#_Tune.Ratios)
		if _TMode~="Manual" then
			_Shifting = true
			if _CGear>1 then
				if _Tune.AutoShiftType=="DCT" then
					wait(_Tune.ShiftDnTime)
				elseif _Tune.AutoShiftType=="Rev" then
					repeat wait() until _RPM>=math.max(math.min(maxSpin*_Tune.Ratios[PrevGear]*fFDr,_Tune.Redline-_Tune.RevBounce),_Tune.IdleRPM) or not _IsOn or _ShiftUp
				end
			end
		end
		_ShiftDn = false
		_Shifting = false
		if _TMode ~= "Manual" and not _IsOn then return end
		_CGear = math.max(_CGear-1,0)
		if _TMode ~= "Manual" or (_TMode == "Manual" and (_CGear == 0 or AutoCheck)) and _IsOn then _ClPressing = false end
	end
end

local tqTCS = 1
local sthrot = 0
local _StallOK = false
local ticc = tick()
local bticc = tick()


Prompt: --- Skill

Response:
local UIS = game:GetService("UserInputService")
local plr = game.Players.LocalPlayer
local Mouse = plr:GetMouse()
local Debounce = true
Player = game.Players.LocalPlayer

UIS.InputBegan:Connect(function(Input)
	if Input.KeyCode == Enum.KeyCode.X and Debounce == true and Tool.Equip.Value == true and Tool.Active.Value == "None" then
		Debounce = false
		Tool.Active.Value = "LightBeam"
		Track1 = Player.Character.Humanoid:LoadAnimation(script.Anim01)
		Track1:Play()
		wait(0.27)
		script.Fire:FireServer(plr)
	local hum =  Player.Character.Humanoid
	for i = 1,2 do
		wait()
		hum.CameraOffset = Vector3.new(
			math.random(-1,1),
			math.random(-1,1),
			math.random(-1,1)
		)
	end
	hum.CameraOffset = Vector3.new(0,0,0)
		Tool.Active.Value = "None"
		wait(5.5)
		Debounce = true
	end
end)


Prompt: -- Variables

Response:
local Resources = RepStorage.Resources
local Classes = Resources.Classes
local Tools = require(RepStorage.Modules.Tools)
local COMMANDS = require(RepStorage.Modules.COMMANDS)

Players.PlayerAdded:Connect(function(Player)
	Player.Chatted:Connect(function(Message : string)
		COMMANDS.NON_COMMANDS.PROCESS(Player, Message)
	end)
end)


Prompt:
--[=[
	@return Promise
	Returns a promise that is resolved once Knit has started. This is useful
	for any code that needs to tie into Knit services but is not the script
	that called `Start`.
	```lua
	Knit.OnStart():andThen(function()
		local MyService = Knit.Services.MyService
		MyService:DoSomething()
	end):catch(warn)
	```
]=]

Response:
function KnitServer.OnStart()
	if startedComplete then
		return Promise.resolve()
	else
		return Promise.fromEvent(onStartedComplete.Event)
	end
end

return KnitServer


Prompt:
--[[
		___      _______                _
	   / _ |____/ ___/ /  ___ ____ ___ (_)__
	  / __ /___/ /__/ _ \/ _ `(_-<(_-</ (_-<
	 /_/ |_|   \___/_//_/\_,_/___/___/_/___/
 						SecondLogic @ Inspare
]]

Response:
local car = script.Parent.Car.Value
local vl = script.Parent.Values

local strength = 300 --this may require some experimenting, this is a good setting as-is. higher value = stronger.

local max = 4 --in SPS, not km/h, not MPH.


Prompt: -- Move ScreenGuis into PlayerGui:

Response:
local shouldRemove = true
for i,v in ipairs(guis:GetChildren()) do
	if (v:IsA("LayerCollector") and v.ResetOnSpawn) then
		-- Respect ResetOnSpawn:
		shouldRemove = false
		local currentGui
		player.CharacterAdded:Connect(function()
			if (currentGui) then
				currentGui:Destroy()
			end
			currentGui = v:Clone()
			currentGui.Parent = playerGui
		end)
	else
		-- Move objects to PlayerGui:
		v.Parent = playerGui
	end
end

_G.GuiLoaded = true

if (shouldRemove) then
	script:Destroy()
end


Prompt: -- Modules

Response: Utils = require(SharedModules:WaitForChild("Utilities"))


Prompt: -- [[ Update ]]--

Response:
function OrbitalCamera:Update(dt: number): (CFrame, CFrame)
	local now = tick()
	local timeDelta = (now - self.lastUpdate)
	local userPanningTheCamera = CameraInput.getRotation() ~= Vector2.new()
	local camera = 	workspace.CurrentCamera
	local newCameraCFrame = camera.CFrame
	local newCameraFocus = camera.Focus
	local player = PlayersService.LocalPlayer
	local cameraSubject = camera and camera.CameraSubject
	local isInVehicle = cameraSubject and cameraSubject:IsA('VehicleSeat')
	local isOnASkateboard = cameraSubject and cameraSubject:IsA('SkateboardPlatform')

	if self.lastUpdate == nil or timeDelta > 1 then
		self.lastCameraTransform = nil
	end

	-- Reset tween speed if user is panning
	if userPanningTheCamera then
		self.lastUserPanCamera = tick()
	end

	local subjectPosition = self:GetSubjectPosition()

	if subjectPosition and player and camera then

		-- Process any dollying being done by gamepad
		-- TODO: Move this
		if self.gamepadDollySpeedMultiplier ~= 1 then
			self:SetCameraToSubjectDistance(self.currentSubjectDistance * self.gamepadDollySpeedMultiplier)
		end

		local VREnabled = VRService.VREnabled
		newCameraFocus = VREnabled and self:GetVRFocus(subjectPosition, timeDelta) or CFrame.new(subjectPosition)

		local flaggedRotateInput = CameraInput.getRotation()

		local cameraFocusP = newCameraFocus.p
		if VREnabled and not self:IsInFirstPerson() then
			local cameraHeight = self:GetCameraHeight()
			local vecToSubject: Vector3 = (subjectPosition - camera.CFrame.p)
			local distToSubject: number = vecToSubject.Magnitude

			-- Only move the camera if it exceeded a maximum distance to the subject in VR
			if distToSubject > self.currentSubjectDistance or flaggedRotateInput.X ~= 0 then
				local desiredDist = math.min(distToSubject, self.currentSubjectDistance)

				-- Note that CalculateNewLookVector is overridden from BaseCamera
				vecToSubject = self:CalculateNewLookVector(vecToSubject.Unit * X1_Y0_Z1, Vector2.new(flaggedRotateInput.X, 0)) * desiredDist

				local newPos = cameraFocusP - vecToSubject
				local desiredLookDir = camera.CFrame.LookVector
				if flaggedRotateInput.X ~= 0 then
					desiredLookDir = vecToSubject
				end
				local lookAt = Vector3.new(newPos.X + desiredLookDir.X, newPos.Y, newPos.Z + desiredLookDir.Z)
				newCameraCFrame = CFrame.new(newPos, lookAt) + Vector3.new(0, cameraHeight, 0)
			end
		else
			-- rotateInput is a Vector2 of mouse movement deltas since last update
			self.curAzimuthRad = self.curAzimuthRad - flaggedRotateInput.X

			if self.useAzimuthLimits then
				self.curAzimuthRad = math.clamp(self.curAzimuthRad, self.minAzimuthAbsoluteRad, self.maxAzimuthAbsoluteRad)
			else
				self.curAzimuthRad = (self.curAzimuthRad ~= 0) and (math.sign(self.curAzimuthRad) * (math.abs(self.curAzimuthRad) % TAU)) or 0
			end

			self.curElevationRad = math.clamp(self.curElevationRad + flaggedRotateInput.Y, self.minElevationRad, self.maxElevationRad)

			local cameraPosVector = self.currentSubjectDistance * ( CFrame.fromEulerAnglesYXZ( -self.curElevationRad, self.curAzimuthRad, 0 ) * UNIT_Z )
			local camPos = subjectPosition + cameraPosVector

			newCameraCFrame = CFrame.new(camPos, subjectPosition)
		end

		self.lastCameraTransform = newCameraCFrame
		self.lastCameraFocus = newCameraFocus
		if (isInVehicle or isOnASkateboard) and cameraSubject:IsA('BasePart') then
			self.lastSubjectCFrame = cameraSubject.CFrame
		else
			self.lastSubjectCFrame = nil
		end
	end

	self.lastUpdate = now
	return newCameraCFrame, newCameraFocus
end

return OrbitalCamera


Prompt: -- Events and Values

Response:
local events = ReplicatedStorage.Events
local displayValues = ReplicatedStorage.DisplayValues

local roundEnd = events.RoundEnd
local playersLeft = displayValues.PlayersLeft


Prompt: --			print("[ProfileService]: Roblox API services unavailable - data will not be saved")

Response:
		else
		--	print("[ProfileService]: Roblox API services available - data will be saved")
		end
		IsLiveCheckActive = false
	end)()
end


Prompt: -- Update humanoid's WalkSpeed based on sprint state and health

Response:
local function updateWalkSpeed()
	local sprintKeyDown = checkSprintKeyDown()
	local baseSpeed = humanoid.Health / 100 * 16
	local sprintSpeed = baseSpeed * SPRINT_MULTIPLIER

	if baseSpeed > 16 then
		baseSpeed = 16
	end

	if sprintSpeed > 24 then
		sprintSpeed = 24
	end

	if humanoid.Health <= SPRINT_DISABLED_THRESHOLD then
		humanoid.WalkSpeed = baseSpeed * 0.5
	elseif sprintKeyDown then
		humanoid.WalkSpeed = sprintSpeed
	else
		humanoid.WalkSpeed = baseSpeed
	end
end


Prompt:
--- Same as indexing, but uses an incremented number as a key.
-- @param task An item to clean
-- @treturn number taskId

Response:
function Maid:GiveTask(task)
	assert(task)
	local taskId = #self._tasks+1
	self[taskId] = task
	return taskId
end


Prompt:
--[=[
	@param name string
	@param priority number
	@param fn (dt: number) -> ()
	Calls `RunService:BindToRenderStep` and registers a function in the
	trove that will call `RunService:UnbindFromRenderStep` on cleanup.

	```lua
	trove:BindToRenderStep("Test", Enum.RenderPriority.Last.Value, function(dt)
		-- Do something
	end)
	```
]=]

Response:
function Trove:BindToRenderStep(name: string, priority: number, fn: (dt: number) -> ())
	if self._cleaning then
		error("Cannot call trove:BindToRenderStep() while cleaning", 2)
	end
	RunService:BindToRenderStep(name, priority, fn)
	self:Add(function()
		RunService:UnbindFromRenderStep(name)
	end)
end