Response:
if Module.DualEnabled then
	Handle2 = Tool:WaitForChild("Handle2",2)
	if Handle2 == nil and Module.DualEnabled then error("\"Dual\" setting is enabled but \"Handle2\" is missing!") end
end

local Equipped = false
local Enabled = true
local Down = false
local HoldDown = false
local Reloading = false
local AimDown = false
local Scoping = false
local Mag = MagValue.Value
local Ammo = AmmoValue.Value
local MaxAmmo = Module.MaxAmmo

if Module.IdleAnimationID ~= nil or Module.DualEnabled then
	IdleAnim = Tool:WaitForChild("IdleAnim")
	IdleAnim = Humanoid:LoadAnimation(IdleAnim)
end
if Module.FireAnimationID ~= nil then
	FireAnim = Tool:WaitForChild("FireAnim")
	FireAnim = Humanoid:LoadAnimation(FireAnim)
end
if Module.ReloadAnimationID ~= nil then
	ReloadAnim = Tool:WaitForChild("ReloadAnim")
	ReloadAnim = Humanoid:LoadAnimation(ReloadAnim)
end
if Module.ShotgunClipinAnimationID ~= nil then
	ShotgunClipinAnim = Tool:WaitForChild("ShotgunClipinAnim")
	ShotgunClipinAnim = Humanoid:LoadAnimation(ShotgunClipinAnim)
end
if Module.HoldDownAnimationID ~= nil then
	HoldDownAnim = Tool:WaitForChild("HoldDownAnim")
	HoldDownAnim = Humanoid:LoadAnimation(HoldDownAnim)
end
if Module.EquippedAnimationID ~= nil then
	EquippedAnim = Tool:WaitForChild("EquippedAnim")
	EquippedAnim = Humanoid:LoadAnimation(EquippedAnim)
end

function wait(TimeToWait)
	if TimeToWait ~= nil then
		local TotalTime = 0
		TotalTime = TotalTime + game:GetService("RunService").Heartbeat:wait()
		while TotalTime < TimeToWait do
			TotalTime = TotalTime + game:GetService("RunService").Heartbeat:wait()
		end
	else
		game:GetService("RunService").Heartbeat:wait()
	end
end

function numLerp(A, B, Alpha)
	return A + (B - A) * Alpha
end

function RAND(Min, Max, Accuracy)
	local Inverse = 1 / (Accuracy or 1)
	return (math.random(Min * Inverse, Max * Inverse) / Inverse)
end

function GetFireDirection(CurrentPosOnScreen, FirePointObject)
	local X = CurrentPosOnScreen.X + math.random(-Module.SpreadX * 2, Module.SpreadX * 2) * (AimDown and 1-Module.SpreadRedutionIS and 1-Module.SpreadRedutionS or 1)
	local Y = CurrentPosOnScreen.Y + math.random(-Module.SpreadY * 2, Module.SpreadY * 2) * (AimDown and 1-Module.SpreadRedutionIS and 1-Module.SpreadRedutionS or 1)
	local RayMag1 = Camera:ScreenPointToRay(X, Y) --Hence the var name, the magnitude of this is 1.
	local NewRay = Ray.new(RayMag1.Origin, RayMag1.Direction * 5000)
	local Target, Position = workspace:FindPartOnRay(NewRay, Character)
	--NOTE: This ray is from camera to object's position. This is why I check for a position value - With that value, I can get the proper direction
	return (Position - FirePointObject.WorldPosition).Unit
end

MarkerEvent.Event:connect(function(IsHeadshot)
	pcall(function()
	    if Module.HitmarkerEnabled then
		    if IsHeadshot then
			    GUI.Crosshair.Hitmarker.ImageColor3 = Module.HitmarkerColorHS
                GUI.Crosshair.Hitmarker.ImageTransparency = 0
                TweeningService:Create(GUI.Crosshair.Hitmarker, TweenInfo.new(Module.HitmarkerFadeTimeHS, Enum.EasingStyle.Linear, Enum.EasingDirection.Out), {ImageTransparency = 1}):Play()
	            local markersound = GUI.Crosshair.MarkerSound:Clone()
	            markersound.PlaybackSpeed = Module.HitmarkerSoundPitchHS
	            markersound.Parent = Player.PlayerGui
	            markersound:Play()
	            game:GetService("Debris"):addItem(markersound,markersound.TimeLength)
		    else
			    GUI.Crosshair.Hitmarker.ImageColor3 = Module.HitmarkerColor
			    GUI.Crosshair.Hitmarker.ImageTransparency = 0
			    TweeningService:Create(GUI.Crosshair.Hitmarker, TweenInfo.new(Module.HitmarkerFadeTime, Enum.EasingStyle.Linear, Enum.EasingDirection.Out), {ImageTransparency = 1}):Play()
	            local markersound = GUI.Crosshair.MarkerSound:Clone()
	            markersound.PlaybackSpeed = Module.HitmarkerSoundPitch
	            markersound.Parent = Player.PlayerGui
	            markersound:Play()
	            game:GetService("Debris"):addItem(markersound,markersound.TimeLength)
			end
	    end
	end)
end)

function EjectShell(ShootingHandle)
	if Module.BulletShellEnabled then
		local ShellPos = (ShootingHandle.CFrame * CFrame.new(Module.BulletShellOffset.X,Module.BulletShellOffset.Y,Module.BulletShellOffset.Z)).p
		local Chamber = Instance.new("Part")
		Chamber.Name = "Chamber"
		Chamber.Size = Vector3.new(0.01,0.01,0.01)
		Chamber.Transparency = 1
		Chamber.Anchored = false
		Chamber.CanCollide = false
		Chamber.TopSurface = Enum.SurfaceType.SmoothNoOutlines
		Chamber.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
		local Weld = Instance.new("Weld",Chamber)
		Weld.Part0 = ShootingHandle
		Weld.Part1 = Chamber
		Weld.C0 = CFrame.new(Module.BulletShellOffset.X,Module.BulletShellOffset.Y,Module.BulletShellOffset.Z)
		Chamber.Position = ShellPos
		Chamber.Parent = workspace.CurrentCamera
		local function spawner()
	        local Shell = Instance.new("Part")
	        Shell.CFrame = Chamber.CFrame * CFrame.fromEulerAnglesXYZ(-2.5,1,1)
	        Shell.Size = Module.ShellSize
	        Shell.CanCollide = Module.AllowCollide
	        Shell.Name = "Shell"
	        --VVV Edit here VVV--
		    Shell.Velocity = Chamber.CFrame.lookVector * 20 + Vector3.new(math.random(-10,10),20,math.random(-10,10))
	        Shell.RotVelocity = Vector3.new(0,200,0)
	        --^^^ Edit here ^^^--
	        Shell.Parent = workspace.CurrentCamera
	        local shellmesh = Instance.new("SpecialMesh")
	        shellmesh.Scale = Module.ShellScale
	        shellmesh.MeshId = "rbxassetid://"..Module.ShellMeshID
	        shellmesh.TextureId = "rbxassetid://"..Module.ShellTextureID
	        shellmesh.MeshType = "FileMesh"
	        shellmesh.Parent = Shell
	        game:GetService("Debris"):addItem(Shell,Module.DisappearTime)
		end
		spawn(spawner)
		game.Debris:AddItem(Chamber,10)
	end
end

function RecoilCamera()
	if Module.CameraRecoilingEnabled then
	    local CurrentRecoil = Module.Recoil*(AimDown and 1-Module.RecoilRedution or 1)
        local RecoilX = math.rad(CurrentRecoil * RAND(Module.AngleX_Min, Module.AngleX_Max, Module.Accuracy))
	    local RecoilY = math.rad(CurrentRecoil * RAND(Module.AngleY_Min, Module.AngleY_Max, Module.Accuracy))
	    local RecoilZ = math.rad(CurrentRecoil * RAND(Module.AngleZ_Min, Module.AngleZ_Max, Module.Accuracy))
	    CameraModule:accelerate(RecoilX,RecoilY,RecoilZ)
		delay(0.05, function()
		    CameraModule:accelerateXY(-RecoilX,-RecoilY)
	    end)
	end
end

function Fire(ShootingHandle, InputPos)
	if FireAnim then FireAnim:Play(nil,nil,Module.FireAnimationSpeed) end
	if not ShootingHandle.FireSound.Playing or not ShootingHandle.FireSound.Looped then ShootingHandle.FireSound:Play() end
	local FireDirection = GetFireDirection(InputPos, ShootingHandle:FindFirstChild("GunFirePoint"))
	Player.PlayerScripts.BulletVisualizerScript.Visualize:Fire(nil,Tool,ShootingHandle,FireDirection,
		                                                        ShootingHandle:FindFirstChild("GunFirePoint"),
																{Module.HitEffectEnabled,Module.HitSoundIDs,Module.HitSoundPitch,Module.HitSoundVolume,script:WaitForChild("HitEffect"),Module.CustomHitEffect},
																{Module.BloodEnabled,Module.HitCharSndIDs,Module.HitCharSndPitch,Module.HitCharSndVolume,script:WaitForChild("BloodEffect")},
																{Module.BulletHoleEnabled,Module.BulletHoleSize,Module.BulletHoleTexture,Module.PartColor,Module.BulletHoleVisibleTime,Module.BulletHoleFadeTime},
													            {Module.FleshHole,Module.FleshHoleSize,Module.FleshHoleTexture,Module.FleshHoleColor,Module.FleshHoleVisibleTime,Module.FleshHoleFadeTime},
																{Module.ExplosiveEnabled,Module.ExplosionRadius,Module.ExplosionSoundEnabled,Module.ExplosionSoundIDs,Module.ExplosionSoundPitch,Module.ExplosionSoundVolume,Module.CustomExplosion,script:WaitForChild("ExplosionEffect")},
													            {Module.BulletTracerEnabled,Module.BulletTracerOffset0,Module.BulletTracerOffset1,script:WaitForChild("TracerEffect"),Module.BulletParticleEnaled,script:WaitForChild("ParticleEffect"),Module.Range,Module.BulletSpeed,Module.DropGravity,Module.WindOffset,Module.BulletSize,Module.BulletColor,Module.BulletTransparency,Module.BulletMaterial,Module.BulletShape,Module.BulletMeshEnabled,Module.BulletMeshID,Module.BulletTextureID,Module.BulletMeshScale},
													            {Module.BaseDamage,Module.HeadshotDamageMultiplier,Module.HeadshotEnabled},
	                                                            {Module.WhizSoundEnabled,Module.WhizSoundID,Module.WhizSoundVolume,Module.WhizSoundPitch},
	                                                            {Module.BulletLightEnabled,Module.BulletLightBrightness,Module.BulletLightColor,Module.BulletLightRange,Module.BulletLightShadows},
	                                                            {Module.Knockback, Module.Lifesteal, Module.FlamingBullet})
	VisualizeBullet:FireServer(Tool,ShootingHandle,FireDirection,
		                                            ShootingHandle:FindFirstChild("GunFirePoint"),
													{Module.HitEffectEnabled,Module.HitSoundIDs,Module.HitSoundPitch,Module.HitSoundVolume,script:WaitForChild("HitEffect"),Module.CustomHitEffect},
													{Module.BloodEnabled,Module.HitCharSndIDs,Module.HitCharSndPitch,Module.HitCharSndVolume,script:WaitForChild("BloodEffect")},
													{Module.BulletHoleEnabled,Module.BulletHoleSize,Module.BulletHoleTexture,Module.PartColor,Module.BulletHoleVisibleTime,Module.BulletHoleFadeTime},
													{Module.FleshHole,Module.FleshHoleSize,Module.FleshHoleTexture,Module.FleshHoleColor,Module.FleshHoleVisibleTime,Module.FleshHoleFadeTime},
													{Module.ExplosiveEnabled,Module.ExplosionRadius,Module.ExplosionSoundEnabled,Module.ExplosionSoundIDs,Module.ExplosionSoundPitch,Module.ExplosionSoundVolume,Module.CustomExplosion,script:WaitForChild("ExplosionEffect")},
													{Module.BulletTracerEnabled,Module.BulletTracerOffset0,Module.BulletTracerOffset1,script:WaitForChild("TracerEffect"),Module.BulletParticleEnaled,script:WaitForChild("ParticleEffect"),Module.Range,Module.BulletSpeed,Module.DropGravity,Module.WindOffset,Module.BulletSize,Module.BulletColor,Module.BulletTransparency,Module.BulletMaterial,Module.BulletShape,Module.BulletMeshEnabled,Module.BulletMeshID,Module.BulletTextureID,Module.BulletMeshScale},
													{Module.BaseDamage,Module.HeadshotDamageMultiplier,Module.HeadshotEnabled},
	                                                {Module.WhizSoundEnabled,Module.WhizSoundID,Module.WhizSoundVolume,Module.WhizSoundPitch},
	                                                {Module.BulletLightEnabled,Module.BulletLightBrightness,Module.BulletLightColor,Module.BulletLightRange,Module.BulletLightShadows},
	                                                {Module.Knockback, Module.Lifesteal, Module.FlamingBullet})

end

function Reload()
	if Enabled and not Reloading and (Ammo > 0 or not Module.LimitedAmmoEnabled) and Mag < Module.AmmoPerMag then
		Reloading = true
		if AimDown then
            TweeningService:Create(Camera, TweenInfo.new(Module.TweenLengthNAD, Module.EasingStyleNAD, Module.EasingDirectionNAD), {FieldOfView = 70}):Play()
			CrosshairModule:setcrossscale(1)
			--[[local GUI = game:GetService("Players").LocalPlayer.PlayerGui:FindFirstChild("ZoomGui")
			if GUI then GUI:Destroy() end]]
			Scoping = false
			game:GetService("Players").LocalPlayer.CameraMode = Enum.CameraMode.Classic
			UserInputService.MouseDeltaSensitivity = InitialSensitivity
			AimDown = false
		end
		UpdateGUI()
		if Module.ShotgunReload then
			for i = 1,(Module.AmmoPerMag - Mag) do
				if ShotgunClipinAnim then ShotgunClipinAnim:Play(nil,nil,Module.ShotgunClipinAnimationSpeed) end
				Handle.ShotgunClipin:Play()
				wait(Module.ShellClipinSpeed)
			end
		end
		if ReloadAnim then ReloadAnim:Play(nil,nil,Module.ReloadAnimationSpeed) end
		Handle.ReloadSound:Play()
		wait(Module.ReloadTime)
		if Module.LimitedAmmoEnabled then
		local ammoToUse = math.min(Module.AmmoPerMag - Mag, Ammo)
		Mag = Mag + ammoToUse
		Ammo = Ammo - ammoToUse
		else
	    Mag = Module.AmmoPerMag
		end
		ChangeMagAndAmmo:FireServer(Mag,Ammo)
		Reloading = false
		UpdateGUI()
	end
end

function UpdateGUI()
	GUI.Frame.Mag.Fill:TweenSizeAndPosition(UDim2.new(Mag/Module.AmmoPerMag,0,1,0), UDim2.new(0,0,0,0), Enum.EasingDirection.Out, Enum.EasingStyle.Quint, 0.25, true)
	GUI.Frame.Ammo.Fill:TweenSizeAndPosition(UDim2.new(Ammo/Module.MaxAmmo,0,1,0), UDim2.new(0,0,0,0), Enum.EasingDirection.Out, Enum.EasingStyle.Quint, 0.25, true)
	GUI.Frame.Mag.Current.Text = Mag
	GUI.Frame.Mag.Max.Text = Module.AmmoPerMag
	GUI.Frame.Ammo.Current.Text = Ammo
	GUI.Frame.Ammo.Max.Text = Module.MaxAmmo

	GUI.Frame.Mag.Current.Visible = not Reloading
	GUI.Frame.Mag.Max.Visible = not Reloading
	GUI.Frame.Mag.Frame.Visible = not Reloading
	GUI.Frame.Mag.Reloading.Visible = Reloading

	GUI.Frame.Ammo.Current.Visible = not (Ammo <= 0)
	GUI.Frame.Ammo.Max.Visible = not (Ammo <= 0)
	GUI.Frame.Ammo.Frame.Visible = not (Ammo <= 0)
	GUI.Frame.Ammo.NoMoreAmmo.Visible = (Ammo <= 0)

	GUI.Frame.Ammo.Visible = Module.LimitedAmmoEnabled
	GUI.Frame.Size = Module.LimitedAmmoEnabled and UDim2.new(0,250,0,100) or UDim2.new(0,250,0,55)
	GUI.Frame.Position = Module.LimitedAmmoEnabled and UDim2.new(2,0,1,0)or UDim2.new(2,0,1,0)
	GUI.MobileButtons.Visible = UserInputService.TouchEnabled --For mobile version
	GUI.MobileButtons.AimButton.Visible = Module.SniperEnabled or Module.IronsightEnabled
	GUI.MobileButtons.HoldDownButton.Visible = Module.HoldDownEnabled
end


Prompt:
-- ================================================================================
-- Settings - Training Jet
-- ================================================================================

Response:
local Settings = {}

Settings.DefaultSpeed = 110		-- Speed when not boosted [Studs/second, Range 50-300]
Settings.BoostSpeed = 180		-- Speed when boosted [Studs/second, Maximum: 400]
Settings.BoostAmount = 9		-- Duration of boost in seconds
Settings.Steering = 6			-- How quickly the speeder turns [Range: 1-10]


Prompt: --// Aim|Zoom|Sensitivity Customization

Response:
	ZoomSpeed = 0.125; -- The lower the number the slower and smoother the tween
	AimZoom = 5; -- Default zoom
	AimSpeed = 0.70;
	UnaimSpeed = 0.23;
	CycleAimZoom = 55; -- Cycled zoom
	MouseSensitivity = 0.05; -- Number between 0.1 and 1
	SensitivityIncrement = 0.05; -- No touchy


Prompt: --Horsepower Curve

Response:
local fgc_h=_Tune.Horsepower/100
local fgc_n=_Tune.PeakRPM/1000
local fgc_a=_Tune.PeakSharpness
local fgc_c=_Tune.CurveMult

function FGC(x)
	x=x/1000
	return (((-(x-fgc_n)^2)*math.min(fgc_h/(fgc_n^2),fgc_c^(fgc_n/fgc_h)))+fgc_h)*(x-((x^fgc_a)/((fgc_a*fgc_n)^(fgc_a-1))))
end
local PeakFGC = FGC(_Tune.PeakRPM)


Response:
tool.Equipped:connect(function()
	equipped = true
	trail.Enabled = false
	cananimate = true
	canattack = false
	handle.Transparency = 1
	owner = game:GetService("Players"):GetPlayerFromCharacter(tool.Parent)
	character = owner.Character
	local rightarm = Instance.new("Weld", character.Torso)
	rightarm.Part0 = character.Torso
	rightarm.Part1 = character["Right Arm"]
	rightarm.C0 = CFrame.new(1.5,0,0)
	rightarm.Name = "RightArmWeldbat"
	local leftarm = Instance.new("Weld", character.Torso)
	leftarm.Part0 = character.Torso
	leftarm.Part1 = character["Left Arm"]
	leftarm.C0 = CFrame.new(-1.5,0,0)
	leftarm.Name = "LeftArmWeldbat"
	local head = Instance.new("Weld", character.Torso)
	head.Part0 = character.Torso
	head.Part1 = character.Head
	head.C0 = CFrame.new(0,1.5,0)
	head.Name = "HeadWeldbat"
	local humanoidrootpart = Instance.new("Weld", character.HumanoidRootPart)
	humanoidrootpart.Part0 = character.HumanoidRootPart
	humanoidrootpart.Part1 = character.Torso
	humanoidrootpart.Name = "HumanoidRootPartWeldbat"
	for i = 0,1 , 0.05 do
		humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.fromEulerAnglesXYZ(0,math.rad(25),0),i)
		leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.5,0.5,0) * CFrame.fromEulerAnglesXYZ(math.pi+math.rad(10),math.rad(75),math.rad(-10)) * CFrame.new(0,-0.5,0),i)
		rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.5,0) * CFrame.fromEulerAnglesXYZ(0,0,math.rad(10)) * CFrame.new(0,-0.5,0),i)
		runservice.Stepped:wait()
	end
	local grip = character["Right Arm"]:WaitForChild("RightGrip")
	grip.Part1 = nil
	local weldd = Instance.new("Weld", handle)
	weldd.Part0 = character["Left Arm"]
	weldd.Part1 = handle
	weldd.Name = "AIDS"
	weldd.C0 = CFrame.new(0, 0, -1.70000005, 0, 0, 1, 1, 0, 0, 0, 1, 0) * CFrame.fromEulerAnglesXYZ((math.pi/2),math.rad(15),0) * CFrame.new(-0.7,0,-0.1)
	cananimate = true
	if character:findFirstChild("BatBack") then
		character:findFirstChild("BatBack").Transparency = 1
	end
	handle.Transparency = 0
	equipsound:Play()
	local WHEN = 0
	coroutine.wrap(function()
		while runservice.Stepped:wait() and equipped do
			if cananimate then
				if WHEN < 40 then
					WHEN = WHEN + 1
				elseif WHEN == 40 then
					WHEN = 41
					grip.Part1 = handle
					canattack = true
					weldd:destroy()
				end
				tool.Grip = tool.Grip:lerp(CFrame.new(0, 0, -1.70000005, 0, 0, 1, 1, 0, 0, 0, 1, 0),0.1)
				head.C0 = head.C0:lerp(CFrame.new(0,1.5,0),0.1)
				humanoidrootpart.C0 = humanoidrootpart.C0:lerp(CFrame.new(),0.1)
				leftarm.C0 = leftarm.C0:lerp(CFrame.new(-1.4,0.5,0) * CFrame.fromEulerAnglesXYZ((math.pi/2)-math.rad(50)+math.sin(tick())/15,0,math.rad(50)) * CFrame.new(0,-0.8,0),0.1)
				rightarm.C0 = rightarm.C0:lerp(CFrame.new(1.5,0.5,0) * CFrame.fromEulerAnglesXYZ((math.pi/2)-math.rad(35)+math.sin(tick())/15,math.rad(20),math.rad(-40)) * CFrame.new(0,-0.8,0),0.1)
			end
		end
	end)()
end)
tool.Unequipped:connect(function()
	equipped = false
	mouseclick = false
	cananimate = false
	if character.Torso:findFirstChild("LeftArmWeldbat") then
		character.Torso:findFirstChild("LeftArmWeldbat"):destroy()
	end
	if character.Torso:findFirstChild("RightArmWeldbat") then
		character.Torso:findFirstChild("RightArmWeldbat"):destroy()
	end
	if character.Torso:findFirstChild("HeadWeldbat") then
		character.Torso:findFirstChild("HeadWeldbat"):destroy()
	end
	if character:findFirstChild("HumanoidRootPart") then
		if character.HumanoidRootPart:findFirstChild("HumanoidRootPartWeldbat") then
			character.HumanoidRootPart:findFirstChild("HumanoidRootPartWeldbat"):destroy()
		end
	end
	if not character:findFirstChild("BatBack") then
		local clone = handle:Clone()
		clone:BreakJoints()
		for i,v in pairs(clone:GetDescendants()) do
			if v.ClassName ~= "SpecialMesh" and v.ClassName ~= "TouchTransmitter" then
				v:destroy()
			end
		end
		local weld = Instance.new("Weld", clone)
		weld.Part0 = character.Torso
		weld.Part1 = clone
		weld.C0 = CFrame.new(0,0,0.55)
		weld.C0 = weld.C0 * CFrame.fromEulerAnglesXYZ(0,math.pi/2,math.pi/2)
		weld.C0 = weld.C0 * CFrame.fromEulerAnglesXYZ(math.pi,math.rad(60)+math.pi,0)
		clone.Parent = character
		clone.Name = "BatBack"
	else
		character:findFirstChild("BatBack").Transparency = 0
	end
	handle.Transparency = 1
	character.BatBack:findFirstChildOfClass("SpecialMesh").TextureId = handle:findFirstChildOfClass("SpecialMesh").TextureId
end)


Prompt:
--[[

	LOWGames Studios
	Date: 27 October 2022
	by Elder

]]

Response:
--

local u1 = nil;
coroutine.wrap(function()
	u1 = require(game.ReplicatedStorage:WaitForChild("Framework"):WaitForChild("Library"));
end)();
return function(p1, p2, p3)
	local l__Gravity__1 = game.Workspace.Gravity;
	local v2 = math.atan((p3 ^ 2 + math.sqrt(p3 ^ 4 - l__Gravity__1 * (l__Gravity__1 * p1 ^ 2 + 2 * p2 * p3 ^ 2))) / (l__Gravity__1 * p1));
	if v2 ~= v2 then
		v2 = math.pi / 4;
	end;
	return v2;
end;


Prompt: --= Functions =--

Response:
UIS.InputBegan:connect(function(key, gameProcessed)
	if key.KeyCode == Enum.KeyCode.LeftShift and gameProcessed == false then
		character.Humanoid.WalkSpeed = NewWalkSpeed
		sprinting = true
		while power > 0 and sprinting do
			power = power - .03
			Bar.Size = UDim2.new(power / 10, 0, 1, 0)
			--Bar.BackgroundColor3 = Bar.BackgroundColor3:lerp(Color3.fromRGB(255, 42, 42), 0.001)
			tween:Play()
			wait()
			if power <= 0 then
				character.Humanoid.WalkSpeed = NormalWalkSpeed
			end
		end
	end
end)

UIS.InputEnded:connect(function(key, gameProcessed)
	if key.KeyCode == Enum.KeyCode.LeftShift and gameProcessed == false then
		character.Humanoid.WalkSpeed = NormalWalkSpeed
		sprinting = false
		while power < 10 and not sprinting do
			power = power + .03
			Bar.Size = UDim2.new(power / 10, 0, 1, 0)
			--Bar.BackgroundColor3 = Bar.BackgroundColor3:lerp(Color3.fromRGB(255, 166, 11), 0.001)
			tween2:Play()
			wait()
			if power <= 0 then
				character.Humanoid.WalkSpeed = NormalWalkSpeed
			end
		end
	end
end)


Prompt:
--[[
	This function spawns a set number of tools within each room. Spawn locations are randomly picked, as long as it's
	within the room, and there is sufficient free space around the ranodmly picked location.
]]

Response:
local ServerStorage = game:GetService("ServerStorage")
local ReplicatedStorage = game:GetService("ReplicatedStorage")

local RoomManager = require(ServerStorage.Source.Managers.RoomManager)
local getRandomClearLocationInRegionAsync = require(ServerStorage.Source.Common.getRandomClearLocationInRegionAsync)

local toolsFolder = ReplicatedStorage.Tools
local gravityFuel = toolsFolder.GravityFuel
local repairKit = toolsFolder.RepairKit
local broom = toolsFolder.Broom
local largeCargo = toolsFolder.LargeCargo
local smallCargo = toolsFolder.SmallCargo
local torch = toolsFolder.Torch
local TOTAL_TOOLS_PER_ROOM = 7
local AREA_CLEAR_SIZE = Vector3.new(5, 5, 5)

local random = Random.new(tick())


Prompt: --// F key, HornOn

Response:
mouse.KeyDown:connect(function(key)
	if key=="f" then
		veh.Lightbar.middle.Airhorn:Play()
		veh.Lightbar.middle.Wail.Volume = 0
		veh.Lightbar.middle.Yelp.Volume = 0
		veh.Lightbar.middle.Priority.Volume = 0
		veh.Lightbar.HORN.Transparency = 0
	end
end)


Prompt:
--local Player=ModFx.GetPlayerFromTool(Tool) --[[This will be refreshed throughout the script
--											so that if someone wanted to make the tools
--											droppable, itd work with other players	]]
-- commented cause its useless as a global variable, however not deleted so as to keep the above comments

Response:
local ColSer=game:GetService("CollectionService")
local Debris=game:GetService("Debris")

local function FireWep(plr,targetPos)
	if Tool.Enabled==false then return end
	local Player=ModFx.GetPlayerFromTool(Tool)
	if plr~=Player then return end
	local c=plr.Character
	if not c then return end
	local h=c:FindFirstChildWhichIsA("Humanoid")
	local plrTool=c:FindFirstChildWhichIsA("Tool")
	local Head=c:FindFirstChild("Head")
	if not Head or not plrTool or not h then return end
	if plrTool~=Tool then return end
	if h.Health<=0 then return end

	Tool.Enabled=false

	local dir = targetPos - Head.Position
	dir = dir*(1/dir.magnitude)

	local pos = Head.Position + (dir * 8)
	local ad=5000

	local missile = Rocket:clone()
	missile.Name="Rocket"

	local BV=Instance.new("BodyVelocity")
	BV.Parent=missile
	BV.P=12500
	BV.MaxForce=Vector3.new(ad,ad,ad)
	BV.Velocity=dir*60
	missile.CFrame = CFrame.new(pos,  pos + dir)

	local creator_tag = Instance.new("ObjectValue")
	creator_tag.Value = plr
	creator_tag.Name = "creator"
	creator_tag.Parent = missile

	local exp=Tool.Handle.exp:Clone()
	exp.PlaybackSpeed=math.random(90,110)/100
	exp.PlayOnRemove=true
	exp.Parent=missile

	local swoosh=Tool.Handle.swoosh:Clone()
	swoosh.PlaybackSpeed=math.random(95,105)/100
	swoosh.Parent=missile

	missile.Parent = workspace
	ColSer:AddTag(missile,missile.Name)
	ColSer:AddTag(missile,plr.Name)
	missile:SetNetworkOwner(plr)
	swoosh:Play()

	local effect=plr:FindFirstChild("Effect")
	if effect and effect.Value~="None" then
		if effect.Value=="Fire" then
			Instance.new("Fire",missile)
		else
			spawn(function()
				require(game:GetService("ReplicatedStorage").TrailModule).AddTrail(missile,effect.Value,.5,.5,1)
			end)
		end
	end
	Debris:AddItem(missile,10)
	wait(7)
	Tool.Enabled=true
end

Tool.Fire.OnServerEvent:Connect(FireWep)

local function DestroyRocket(plr,Obj,ClientPos)
	local x=true
	local succ,err=pcall(function()
		if Obj:GetNetworkOwner()~=plr then x=false end
	end)
	if err then warn(plr.Name.." may be exploiting") return end -- Not sure how this would happen.
	if x==false then warn(plr.Name.." is definitely exploiting") --[[plr:Kick("Possible exploit detected")]] return end
	--[[ Why am I so confident that they're an exploiter if x==false? Because the network owner of the rocket is SET (as opposed to using auto
	network ownership) to the rocket's firer, and so if the part this remote is firing upon is NOT owned by the user firing the remote, then I
	know the remote is being fired externally. ]]
	local ServerPos=Obj.Position
	local creator=Obj:FindFirstChild("creator")
	local CreatorValue
	if creator then
		CreatorValue=creator.Value
	end
	local Player=ModFx.GetPlayerFromTool(Tool)
	if CreatorValue~=nil and CreatorValue==plr and Player and Player==plr and (ServerPos - ClientPos).magnitude < 20 and ColSer:HasTag(Obj,Obj.Name)
	and ColSer:HasTag(Obj,plr.Name) then -- all these to ensure that it's a rocket, and its their rocket, and its from their tool
		-- "(ServerPos - ClientPos).magnitude" = the distance between the serverside and clientside missile on hit
		Obj:ClearAllChildren()
		Debris:AddItem(Obj,0)
		ModFx.Explosion(CreatorValue,"Rocket",ClientPos)
	end
end

Tool.RocketDestroyEvent.OnServerEvent:connect(DestroyRocket)


Prompt:
--			unit.TextTransparency		= -0.25 + 1.25*cosRot2
--			unit.BackgroundTransparency	=  0.00 + 1.50*cosRot2

Response:
		else
			unit.Visible = false
		end
	end
end


Prompt: --[[ By: Brutez. Script Fixed By Xcorrectgamermaster ]]

Response:
--
local JeffTheKillerScript=script;
repeat wait(0.1)until JeffTheKillerScript and JeffTheKillerScript.Parent and JeffTheKillerScript.Parent.ClassName=="Model"and JeffTheKillerScript.Parent:FindFirstChild("Head")and JeffTheKillerScript.Parent:FindFirstChild("Torso");
local JeffTheKiller=JeffTheKillerScript.Parent;
function raycast(Spos,vec,currentdist)
local hit2,pos2=game.Workspace:FindPartOnRay(Ray.new(Spos+(vec*.05),vec*currentdist),JeffTheKiller);
if hit2~=nil and pos2 then
if hit2.Name=="Handle" and not hit2.CanCollide or string.sub(hit2.Name,1,6)=="Effect"and not hit2.CanCollide then
local currentdist=currentdist-(pos2-Spos).magnitude;
return raycast(pos2,vec,currentdist);
end;
end;
return hit2,pos2;
end;
function RayCast(Position,Direction,MaxDistance,IgnoreList)
return game:GetService("Workspace"):FindPartOnRayWithIgnoreList(Ray.new(Position,Direction.unit*(MaxDistance or 999.999)),IgnoreList);
end;
local JeffTheKillerHumanoid;
for _,Child in pairs(JeffTheKiller:GetChildren())do
if Child and Child.ClassName=="Humanoid"and Child.Health~=0 then
JeffTheKillerHumanoid=Child;
end;
end;
local AttackDebounce=false;
local JeffTheKillerKnife=JeffTheKiller:FindFirstChild("Torso"):FindFirstChild("Knife");
local JeffTheKillerHead=JeffTheKiller:FindFirstChild("Head");
local JeffTheKillerHumanoidRootPart=JeffTheKiller:FindFirstChild("HumanoidRootPart");
local WalkDebounce=false;
local Notice=false;
local JeffLaughDebounce=false;
local MusicDebounce=false;
local NoticeDebounce=false;
local ChosenMusic;
JeffTheKiller:FindFirstChild("Torso"):FindFirstChild("Neck").C0=CFrame.new(0,1,0,-1,0,0,0,0,1,0,1,-0);
local OriginalC0=JeffTheKiller:FindFirstChild("Torso"):FindFirstChild("Neck").C0;
function FindNearestBae()
local NoticeDistance=70;
local TargetMain;
for _,TargetModel in pairs(game:GetService("Workspace"):GetChildren())do
if JeffTheKillerScript and JeffTheKiller and JeffTheKillerHumanoid and JeffTheKillerHumanoid.Health~=0 and TargetModel.className=="Model"and TargetModel~=JeffTheKiller and TargetModel.Name~=JeffTheKiller.Name and TargetModel:FindFirstChild("HumanoidRootPart")and TargetModel:FindFirstChild("Head")then
local TargetPart=TargetModel:FindFirstChild("HumanoidRootPart");
local FoundHumanoid;
for _,Child in pairs(TargetModel:GetChildren())do
if Child and Child.ClassName=="Humanoid"and Child.Health~=0 then
FoundHumanoid=Child;
end;
end;
if TargetModel and TargetPart and FoundHumanoid and FoundHumanoid.Health~=0 and(TargetPart.Position-JeffTheKillerHumanoidRootPart.Position).magnitude<NoticeDistance then
TargetMain=TargetPart;
NoticeDistance=(TargetPart.Position-JeffTheKillerHumanoidRootPart.Position).magnitude;
local hit,pos=raycast(JeffTheKillerHumanoidRootPart.Position,(TargetPart.Position-JeffTheKillerHumanoidRootPart.Position).unit,500)
if hit and hit.Parent and hit.Parent.ClassName=="Model"and hit.Parent:FindFirstChild("HumaniodRootPart")and hit.Parent:FindFirstChild("Head")then
if TargetModel and TargetPart and FoundHumanoid and FoundHumanoid.Health~=0 and(TargetPart.Position-JeffTheKillerHumanoidRootPart.Position).magnitude<15 and not AttackDebounce then
spawn(function()
AttackDebounce=true;
local SwingAnimation=JeffTheKillerHumanoid:LoadAnimation(JeffTheKiller:FindFirstChild("Swing"));
local SwingChoice=math.random(1,2);
local HitChoice=math.random(1,3);
SwingAnimation:Play();
SwingAnimation:AdjustSpeed(2.1+(math.random()*0.1));
if JeffTheKillerScript and JeffTheKiller and JeffTheKillerKnife then
local SwingSound=JeffTheKiller:FindFirstChild("Torso"):FindFirstChild("Swing")
SwingSound.Pitch=1+(math.random()*0.04);
SwingSound:Play();
end;
wait(0.2);
if TargetModel and TargetPart and FoundHumanoid and FoundHumanoid.Health~=0 and(TargetPart.Position-JeffTheKillerHumanoidRootPart.Position).magnitude<8 then
FoundHumanoid:TakeDamage(20);
if HitChoice==1 and JeffTheKillerScript and JeffTheKiller and JeffTheKillerKnife and JeffTheKillerKnife:FindFirstChild("Hit1")then
local HitSound=JeffTheKillerKnife:FindFirstChild("Hit1");
HitSound.Pitch=1+(math.random()*0.04);
HitSound:Play();
elseif HitChoice==2 and JeffTheKillerScript and JeffTheKiller and JeffTheKillerKnife and JeffTheKillerKnife:FindFirstChild("Hit2")then
local HitSound=JeffTheKillerKnife:FindFirstChild("Hit2");
HitSound.Pitch=1+(math.random()*0.04);
HitSound:Play();
elseif HitChoice==3 and JeffTheKillerScript and JeffTheKiller and JeffTheKillerKnife and JeffTheKillerKnife:FindFirstChild("Hit3")then
local HitSound=JeffTheKillerKnife:FindFirstChild("Hit3");
HitSound.Pitch=1+(math.random()*0.04);
HitSound:Play();
end;
end;
wait(1);
AttackDebounce=false;
end);
end;
end;
end;
end;
end;
return TargetMain;
end;
while wait(0.1)do
local TargetPoint=JeffTheKillerHumanoid.TargetPoint;
local Blockage,BlockagePos=RayCast((JeffTheKillerHumanoidRootPart.CFrame+CFrame.new(JeffTheKillerHumanoidRootPart.Position,Vector3.new(TargetPoint.X,JeffTheKillerHumanoidRootPart.Position.Y,TargetPoint.Z)).lookVector*(JeffTheKillerHumanoidRootPart.Size.Z/2)).p,JeffTheKillerHumanoidRootPart.CFrame.lookVector,(JeffTheKillerHumanoidRootPart.Size.Z*2.5),{JeffTheKiller,JeffTheKiller})
local Jumpable=false;
if Blockage then
wait(0.5)
Jumpable=true;
if Blockage and Blockage.Parent and Blockage.Parent.ClassName~="Workspace"then
local BlockageHumanoid;
for _,Child in pairs(Blockage.Parent:GetChildren())do
if Child and Child.ClassName=="Humanoid"and Child.Health~=0 then
BlockageHumanoid=Child;
Jumpable=false;
end;
end;
if Blockage and Blockage:IsA("Terrain")then
local CellPos=Blockage:WorldToCellPreferSolid((BlockagePos-Vector3.new(0,2,0)));
local CellMaterial,CellShape,CellOrientation=Blockage:GetCell(CellPos.X,CellPos.Y,CellPos.Z);
if CellMaterial==Enum.CellMaterial.Water then
Jumpable=false;
end;
elseif BlockageHumanoid or Blockage.ClassName=="TrussPart"or Blockage.ClassName=="WedgePart"or Blockage.Name=="Handle"and Blockage.Parent.ClassName=="Hat"or Blockage.Name=="Handle"and Blockage.Parent.ClassName=="Tool" or Blockage.Parent.Name=="Humanoid" and Blockage.Parent.Name=="HumanoidRootPart" and Blockage.Parent.ClassName=="Humanoid" then
Jumpable=false;
end;
end;
if JeffTheKillerScript and JeffTheKiller and JeffTheKillerHumanoid and JeffTheKillerHumanoid.Health~=0 and not JeffTheKillerHumanoid.Sit and Jumpable then
JeffTheKillerHumanoid.Jump=true;
end;
end;
if JeffTheKillerScript and JeffTheKiller and JeffTheKillerHead and JeffTheKillerHumanoidRootPart and JeffTheKillerHead:FindFirstChild("RakeStep")and (JeffTheKillerHumanoidRootPart.Velocity-Vector3.new(0,JeffTheKillerHumanoidRootPart.Velocity.y,0)).magnitude>=5 and not WalkDebounce and JeffTheKillerHumanoid and JeffTheKillerHumanoid.Health~=0 then
spawn(function()
WalkDebounce=true;
local FiredRay=Ray.new(JeffTheKillerHumanoidRootPart.Position,Vector3.new(0,-4,0));
local RayTarget,endPoint=game:GetService("Workspace"):FindPartOnRay(FiredRay,JeffTheKiller);
if RayTarget then
local JeffTheKillerHeadFootStepClone=JeffTheKillerHead:FindFirstChild("RakeStep"):Clone();
JeffTheKillerHeadFootStepClone.Parent=JeffTheKillerHead;
JeffTheKillerHeadFootStepClone:Play();
JeffTheKillerHeadFootStepClone:Destroy();
if JeffTheKillerScript and JeffTheKiller and JeffTheKillerHumanoid and JeffTheKillerHumanoid.Health~=0 and JeffTheKillerHumanoid.WalkSpeed<17 then
wait(0.4);
elseif JeffTheKillerScript and JeffTheKiller and JeffTheKillerHumanoid and JeffTheKillerHumanoid.Health~=0 and JeffTheKillerHumanoid.WalkSpeed>17 then
wait(0.15);
end
end;
WalkDebounce=false;
end);
end;
local MainTarget=FindNearestBae();
local FoundHumanoid;
if MainTarget then
for _,Child in pairs(MainTarget.Parent:GetChildren())do
if Child and Child.ClassName=="Humanoid"and Child.Health~=0 then
FoundHumanoid=Child;
end;
end;
end;
if JeffTheKillerScript and JeffTheKiller and JeffTheKillerHumanoid and JeffTheKillerHumanoid.Health~=0 and MainTarget and FoundHumanoid and FoundHumanoid.Health~=0 and(MainTarget.Position-JeffTheKillerHumanoidRootPart.Position).magnitude<99999999999999999999 then
if JeffTheKillerScript and JeffTheKiller and JeffTheKillerHead and JeffTheKillerHead:FindFirstChild("RakeTheme")and not JeffTheKillerHead:FindFirstChild("RakeTheme").IsPlaying then
JeffTheKillerHead:FindFirstChild("RakeTheme").Volume=JeffTheKiller:FindFirstChild("Configuration"):FindFirstChild("RakeThemeVolume").Value;
JeffTheKillerHead:FindFirstChild("RakeTheme"):Play();
end;
elseif JeffTheKillerScript and JeffTheKiller and JeffTheKillerHumanoid and JeffTheKillerHumanoid.Health~=0 and MainTarget and FoundHumanoid and FoundHumanoid.Health~=0 and(MainTarget.Position-JeffTheKillerHumanoidRootPart.Position).magnitude>9999999999999999999 then
if JeffTheKillerScript and JeffTheKiller and JeffTheKillerHead and JeffTheKillerHead:FindFirstChild("RakeTheme")and JeffTheKillerHead:FindFirstChild("RakeTheme").IsPlaying then
if not JeffLaughDebounce then
spawn(function()
JeffLaughDebounce=true;
repeat wait(0.1);if JeffTheKillerScript and JeffTheKiller and JeffTheKillerHead and JeffTheKillerHead:FindFirstChild("RakeTheme")then JeffTheKillerHead:FindFirstChild("RakeTheme").Volume=JeffTheKillerHead:FindFirstChild("RakeTheme").Volume-0.1;else break;end;until JeffTheKillerHead:FindFirstChild("RakeTheme").Volume==0 or JeffTheKillerHead:FindFirstChild("RakeTheme").Volume<0;
JeffTheKillerHead:FindFirstChild("RakeTheme").Volume=0;
JeffTheKillerHead:FindFirstChild("RakeTheme"):Stop();
JeffLaughDebounce=false;
end);
end;
end;
end;
if not ChosenMusic and JeffTheKillerScript and JeffTheKiller and JeffTheKillerHumanoid and JeffTheKillerHumanoid.Health~=0 and MainTarget and FoundHumanoid and FoundHumanoid.Health~=0 and(MainTarget.Position-JeffTheKillerHumanoidRootPart.Position).magnitude<50 then
local MusicChoice=math.random(1,2);
if MusicChoice==1 and JeffTheKillerScript and JeffTheKiller and JeffTheKiller:FindFirstChild("Jeff_Scene_Sound1")then
ChosenMusic=JeffTheKiller:FindFirstChild("Jeff_Scene_Sound1");
elseif MusicChoice==2 and JeffTheKillerScript and JeffTheKiller and JeffTheKiller:FindFirstChild("Jeff_Scene_Sound2")then
ChosenMusic=JeffTheKiller:FindFirstChild("Jeff_Scene_Sound2");
end;
if JeffTheKillerScript and JeffTheKiller and ChosenMusic and not ChosenMusic.IsPlaying then
ChosenMusic.Volume=0.5;
ChosenMusic:Play();
end;
elseif JeffTheKillerScript and JeffTheKiller and JeffTheKillerHumanoid and JeffTheKillerHumanoid.Health~=0 and MainTarget and FoundHumanoid and FoundHumanoid.Health~=0 and(MainTarget.Position-JeffTheKillerHumanoidRootPart.Position).magnitude>50 then
if JeffTheKillerScript and JeffTheKiller and ChosenMusic and ChosenMusic.IsPlaying then
if not MusicDebounce then
spawn(function()
MusicDebounce=true;
repeat wait(0.1);if JeffTheKillerScript and JeffTheKiller and ChosenMusic then ChosenMusic.Volume=ChosenMusic.Volume-0.01;else break;end;until ChosenMusic.Volume==0 or ChosenMusic.Volume<0;
if ChosenMusic then
ChosenMusic.Volume=0;
ChosenMusic:Stop();
end;
ChosenMusic=nil;
MusicDebounce=false;
end);
end;
end;
end;
if not MainTarget and not JeffLaughDebounce then
spawn(function()
JeffLaughDebounce=true;
repeat wait(0.1);if JeffTheKillerScript and JeffTheKiller and JeffTheKillerHead and JeffTheKillerHead:FindFirstChild("RakeTheme")then JeffTheKillerHead:FindFirstChild("RakeTheme").Volume=JeffTheKillerHead:FindFirstChild("RakeTheme").Volume-0.1;else break;end;until JeffTheKillerHead:FindFirstChild("RakeTheme").Volume==0 or JeffTheKillerHead:FindFirstChild("RakeTheme").Volume<0;
JeffTheKillerHead:FindFirstChild("RakeTheme").Volume=0;
JeffTheKillerHead:FindFirstChild("RakeTheme"):Stop();
JeffLaughDebounce=false;
end);
end;
if not MainTarget and not MusicDebounce then
spawn(function()
MusicDebounce=true;
repeat wait(0.1);if JeffTheKillerScript and JeffTheKiller and ChosenMusic then ChosenMusic.Volume=ChosenMusic.Volume-0.01;else break;end;until ChosenMusic.Volume==0 or ChosenMusic.Volume<0;
if ChosenMusic then
ChosenMusic.Volume=0;
ChosenMusic:Stop();
end;
ChosenMusic=nil;
MusicDebounce=false;
end);
end;
if MainTarget then
Notice=true;
if Notice and not NoticeDebounce and JeffTheKillerScript and JeffTheKiller and JeffTheKillerHead and JeffTheKillerHead:FindFirstChild("Found")then
JeffTheKiller.Target.Value = true;
JeffTheKillerHead:FindFirstChild("Found"):Play();
wait(0.4);
JeffTheKillerHead:FindFirstChild("RakeScream"):Play();
NoticeDebounce=true;
end;
if JeffTheKillerScript and JeffTheKiller and JeffTheKillerHumanoid and JeffTheKillerHumanoid.Health~=0 then
if MainTarget and FoundHumanoid and FoundHumanoid.Health~=0 and(MainTarget.Position-JeffTheKillerHumanoidRootPart.Position).magnitude>5 then
JeffTheKillerHumanoid.WalkSpeed=JeffTheKiller.Configuration.WalkSpeed.Value;
elseif MainTarget and FoundHumanoid and FoundHumanoid.Health~=0 and(MainTarget.Position-JeffTheKillerHumanoidRootPart.Position).magnitude<5 then
JeffTheKillerHumanoid.WalkSpeed=1;
end;
JeffTheKillerHumanoid:MoveTo(MainTarget.Position+(MainTarget.Position-JeffTheKillerHumanoidRootPart.Position).unit*2,game:GetService("Workspace"):FindFirstChild("Terrain"));
local NeckRotation=(JeffTheKiller:FindFirstChild("Torso").Position.Y-MainTarget.Parent:FindFirstChild("Head").Position.Y)/10;
if NeckRotation>-1.5 and NeckRotation<1.5 then
JeffTheKiller:FindFirstChild("Torso"):FindFirstChild("Neck").C0=OriginalC0*CFrame.fromEulerAnglesXYZ(NeckRotation,0,0);
end;
if NeckRotation<-1.5 then
JeffTheKiller:FindFirstChild("Torso"):FindFirstChild("Neck").C0=CFrame.new(0,1,0,-1,0,0,0,-0.4,0.1,0,0.1,0.9);
elseif NeckRotation>1.5 then
JeffTheKiller:FindFirstChild("Torso"):FindFirstChild("Neck").C0=CFrame.new(0,1,0,-1,0,0,0,0.1,0.08,0,0.08,-0.2);
end;
else
end;
else
Notice=false;
NoticeDebounce=false;
JeffTheKiller:FindFirstChild("Torso"):FindFirstChild("Neck").C0=CFrame.new(0,1,0,-1,0,0,0,0,1,0,1,-0);
if JeffTheKillerScript and JeffTheKiller and JeffTheKillerHumanoid and JeffTheKillerHumanoid.Health~=0 then
JeffTheKillerHumanoid.WalkSpeed=12;
JeffTheKiller.Target.Value=false;
end;
end;
spawn(function()
local AlreadyDo=false;
while wait(0.1) do
if JeffTheKiller.Target.Value==false and AlreadyDo==false then
JeffTheKillerHead.Mouth.Transparency=1;
JeffTheKillerHead.Mouth2.Transparency=0;
JeffTheKillerHead.Mouth2.MouthDecal.Transparency=0;
JeffTheKiller.Wander.Disabled=false;
AlreadyDo=true;
wait(5);
AlreadyDo=false;
end;
if JeffTheKiller.Target.Value==true and AlreadyDo==false then
JeffTheKillerHead.Mouth.Transparency=0;
JeffTheKillerHead.Mouth2.Transparency=1;
JeffTheKillerHead.Mouth2.MouthDecal.Transparency=1;
JeffTheKiller.Wander.Disabled=true;
AlreadyDo=true;
wait(5);
AlreadyDo=false;
end;
end;
end);
spawn(function()
while JeffTheKillerHumanoid.Health > 1 do
wait(1);
JeffTheKiller:FindFirstChild("Torso").Blood.Enabled = false;
JeffTheKiller:FindFirstChild("Torso").Blood2.Enabled = false;
JeffTheKillerHead.Eye1.BrickColor=BrickColor.new("Institutional white");
JeffTheKillerHead.Eye2.BrickColor=BrickColor.new("Institutional white");
end;
end);
if JeffTheKillerScript and JeffTheKiller and JeffTheKillerHumanoid then
JeffTheKillerHumanoid.DisplayDistanceType="None";
JeffTheKillerHumanoid.HealthDisplayDistance=0;
JeffTheKillerHumanoid.Name="NPC";
JeffTheKillerHumanoid.NameDisplayDistance=0;
JeffTheKillerHumanoid.NameOcclusion="EnemyOcclusion";
JeffTheKillerHumanoid.AutoJumpEnabled=true;
JeffTheKillerHumanoid.AutoRotate=true;
JeffTheKillerHumanoid.MaxHealth=2000;
JeffTheKillerHumanoid.JumpPower=80;
JeffTheKillerHumanoid.MaxSlopeAngle=89.9;
end;
if JeffTheKillerScript and JeffTheKiller and JeffTheKillerHumanoid and not JeffTheKillerHumanoid.AutoJumpEnabled then
JeffTheKillerHumanoid.AutoJumpEnabled=true;
end;
if JeffTheKillerScript and JeffTheKiller and JeffTheKillerHumanoid and not JeffTheKillerHumanoid.AutoRotate then
JeffTheKillerHumanoid.AutoRotate=true;
end;
if JeffTheKillerScript and JeffTheKiller and JeffTheKillerHumanoid and JeffTheKillerHumanoid.PlatformStand then
JeffTheKillerHumanoid.PlatformStand=false;
end;
if JeffTheKillerScript and JeffTheKiller and JeffTheKillerHumanoid and JeffTheKillerHumanoid.Sit then
JeffTheKillerHumanoid.Sit=false;
end;
end;


Prompt: -- Now with exciting TeamColors HACK!

Response:
        function waitForChild(parent, childName)
        local child = parent:findFirstChild(childName)
        if child then return child end
        while true do
        child = parent.ChildAdded:wait()
        if child.Name==childName then return child end
        end
        end

        -- TEAM COLORS

        function onTeamChanged(player)

        wait(1)

        local char = player.Character
        if char == nil then return end

        if player.Neutral then
        -- Replacing the current BodyColor object will force a reset
        local old = char:findFirstChild("Body Colors")
        if not old then return end
        old:clone().Parent = char
        old.Parent = nil
        else
        local head = char:findFirstChild("Head")
        local torso = char:findFirstChild("Torso")
        local left_arm = char:findFirstChild("Left Arm")
        local right_arm = char:findFirstChild("Right Arm")
        local left_leg = char:findFirstChild("Left Leg")
        local right_leg = char:findFirstChild("Right Leg")

        if head then head.BrickColor = BrickColor.new(24) end
        if torso then torso.BrickColor = player.TeamColor end
        if left_arm then left_arm.BrickColor = BrickColor.new(26) end
        if right_arm then right_arm.BrickColor = BrickColor.new(26) end
        if left_leg then left_leg.BrickColor = BrickColor.new(26) end
        if right_leg then right_leg.BrickColor = BrickColor.new(26) end
        end
        end

        function onPlayerPropChanged(property, player)
        if property == "Character" then
        onTeamChanged(player)
        end
        if property== "TeamColor" or property == "Neutral" then
        onTeamChanged(player)
        end
        end

        local cPlayer = game.Players:GetPlayerFromCharacter(script.Parent)
        cPlayer.Changed:connect(function(property) onPlayerPropChanged(property, cPlayer) end )
        onTeamChanged(cPlayer)


Prompt: -- connect events

Response:
Humanoid.Died:connect(onDied)
Humanoid.Running:connect(onRunning)
Humanoid.Climbing:connect(onClimbing)
Humanoid.GettingUp:connect(onGettingUp)
Humanoid.FreeFalling:connect(onFreeFall)
Humanoid.FallingDown:connect(onFallingDown)
Humanoid.Seated:connect(onSeated)
Humanoid.PlatformStanding:connect(onPlatformStanding)
Humanoid.Swimming:connect(onSwimming)


Prompt: -- Events

Response:
local Events = ReplicatedStorage:FindFirstChild("Events")
local LoadCharacter = Events:FindFirstChild("LoadCharacter")
local LoadSpeeder = Events:FindFirstChild("LoadSpeeder")


Prompt:
--These are all donations that can be done. You must set this up with your own products to make money of it.
--To make a product you have to make a Developer Product in your game's settings page.
--You can make as many as you want, Once you made one, copy it's ID and past it in the 'ProductId' variable in this script.
--Change the 'ProductPrice' to what the Developer Product Costs.

Response:
local module = {}

module.Products = {

	{
		ProductPrice = 5, --The price from the Developer Product.
		ProductId = 33152750 -- The ID from the Developer Product.
	},

	{
		ProductPrice = 10, --The price from the Developer Product.
		ProductId = 33152755 -- The ID from the Developer Product.
	},

	{
		ProductPrice = 50, --The price from the Developer Product.
		ProductId = 33152758 -- The ID from the Developer Product.
	},

	{
		ProductPrice = 100, --The price from the Developer Product.
		ProductId = 33152760 -- The ID from the Developer Product.
	},

}


Prompt:
-- Mounts the custom material walking sounds into the provided
-- humanoid. This mounting assumes the HumanoidRootPart is the
-- part that will be storing the character's "Running" sound.

Response:
function CharacterRealism:MountMaterialSounds(humanoid)
	local character = humanoid.Parent
	local rootPart = character and character:WaitForChild("HumanoidRootPart", 10)

	if not (rootPart and rootPart:IsA("BasePart")) then
		return
	end

	Util:PromiseChild(rootPart, "Running", function (running)
		if not running:IsA("Sound") then
			return
		end

		local oldPitch = Instance.new("NumberValue")
		oldPitch.Name = "OldPitch"
		oldPitch.Parent = running
		oldPitch.Value = 1

		local function onStateChanged(old, new)
			if new.Name:find("Running") then
				while humanoid:GetState() == new do
					local hipHeight = humanoid.HipHeight

					if humanoid.RigType.Name == "R6" then
						hipHeight = 2.8
					end

					local scale = hipHeight / 3
					local speed = (rootPart.Velocity * XZ_VECTOR3).Magnitude

					local volume = ((speed - 4) / 12) * scale
					running.Volume = math.clamp(volume, 0, 1)

					local pitch = oldPitch.Value / ((scale * 15) / speed)
					running.Pitch = pitch

					RunService.Heartbeat:Wait()
				end
			end
		end

		local function updateRunningSoundId()
			local soundId = self.Sounds.Concrete
			local material = humanoid.FloorMaterial.Name

			if not self.Sounds[material] then
				if not self.MaterialMap[material] then
					material = self.Sounds.Concrete
				else
					material = self.MaterialMap[material]
				end
			end

			if self.Sounds[material] then
				soundId = self.Sounds[material]
			end

			running.SoundId = "rbxassetid://" .. soundId
		end

		local floorListener = humanoid:GetPropertyChangedSignal("FloorMaterial")
		floorListener:Connect(updateRunningSoundId)

		running.EmitterSize = 1
		running.MaxDistance = 50

		updateRunningSoundId()
		humanoid.StateChanged:Connect(onStateChanged)

		onStateChanged(nil, Enum.HumanoidStateType.Running)
	end)
end


Prompt:
--[[**
	Checks if the player is in the given group.
	@param [Instance<Player>] Player The player you are checking for. Can also be their UserID.
	@param [Integer] GroupID The group you are checking.
	@returns [Boolean] Whether or not the player is in the group.
**--]]

Response:
function GroupService:IsInGroupAsync(Player, GroupID)
	for _, Group in ipairs(GroupService:GetGroupsAsync(Player)) do
		if Group.Id == GroupID then
			return true
		end
	end

	return false
end


Prompt:
--[[**
	ensures value is a number where min <= value

	@param min The minimum to use

	@returns A function that will return true iff the condition is passed
**--]]

Response:
function t.numberMin(min)
	return function(value)
		local success, errMsg = t.number(value)
		if not success then
			return false, errMsg or ""
		end
		if value >= min then
			return true
		else
			return false, string.format("number >= %s expected, got %s", min, value)
		end
	end
end


Prompt: -- Container for temporary connections (disconnected automatically)

Response:
local Connections = {};

function MeshTool.Equip()
	-- Enables the tool's equipped functionality

	-- Start up our interface
	ShowUI();

end;

function MeshTool.Unequip()
	-- Disables the tool's equipped functionality

	-- Clear unnecessary resources
	HideUI();
	ClearConnections();

end;

function ClearConnections()
	-- Clears out temporary connections

	for ConnectionKey, Connection in pairs(Connections) do
		Connection:Disconnect();
		Connections[ConnectionKey] = nil;
	end;

end;

function ShowUI()
	-- Creates and reveals the UI

	-- Reveal UI if already created
	if MeshTool.UI then

		-- Reveal the UI
		MeshTool.UI.Visible = true;

		-- Update the UI every 0.1 seconds
		UIUpdater = Support.ScheduleRecurringTask(UpdateUI, 0.1);

		-- Skip UI creation
		return;

	end;

	-- Create the UI
	MeshTool.UI = Core.Tool.Interfaces.BTMeshToolGUI:Clone();
	MeshTool.UI.Parent = Core.UI;
	MeshTool.UI.Visible = true;

	local AddButton = MeshTool.UI.AddButton;
	local RemoveButton = MeshTool.UI.RemoveButton;

	local MeshIdInput = MeshTool.UI.MeshIdOption.TextBox;
	local TextureIdInput = MeshTool.UI.TextureIdOption.TextBox;
	local VertexColorInput = MeshTool.UI.TintOption.HSVPicker;

	MeshTypes = {
		Block = Enum.MeshType.Brick,
		Cylinder = Enum.MeshType.Cylinder,
		File = Enum.MeshType.FileMesh,
		Head = Enum.MeshType.Head,
		Sphere = Enum.MeshType.Sphere,
		Wedge = Enum.MeshType.Wedge
	};

	-- Sort the mesh types
	SortedMeshTypes = Support.Keys(MeshTypes);
	table.sort(SortedMeshTypes);

	-- Create type dropdown
	local function BuildTypeDropdown()
		return Roact.createElement(Dropdown, {
			Position = UDim2.new(0, 40, 0, 0);
			Size = UDim2.new(1, -40, 0, 25);
			Options = SortedMeshTypes;
			MaxRows = 6;
			CurrentOption = MeshTool.CurrentType;
			OnOptionSelected = function (Option)
				SetProperty('MeshType', MeshTypes[Option])
			end;
		})
	end

	-- Mount type dropdown
	local TypeDropdownHandle = Roact.mount(BuildTypeDropdown(), MeshTool.UI.TypeOption, 'Dropdown')
	MeshTool.OnTypeChanged:Connect(function ()
		Roact.update(TypeDropdownHandle, BuildTypeDropdown())
	end)

	-- Enable the scale inputs
	local XScaleInput = MeshTool.UI.ScaleOption.XInput.TextBox;
	local YScaleInput = MeshTool.UI.ScaleOption.YInput.TextBox;
	local ZScaleInput = MeshTool.UI.ScaleOption.ZInput.TextBox;
	XScaleInput.FocusLost:Connect(function (EnterPressed)
		local NewScale = tonumber(XScaleInput.Text);
		SetAxisScale('X', NewScale);
	end);
	YScaleInput.FocusLost:Connect(function (EnterPressed)
		local NewScale = tonumber(YScaleInput.Text);
		SetAxisScale('Y', NewScale);
	end);
	ZScaleInput.FocusLost:Connect(function (EnterPressed)
		local NewScale = tonumber(ZScaleInput.Text);
		SetAxisScale('Z', NewScale);
	end);

	-- Enable the offset inputs
	local XOffsetInput = MeshTool.UI.OffsetOption.XInput.TextBox;
	local YOffsetInput = MeshTool.UI.OffsetOption.YInput.TextBox;
	local ZOffsetInput = MeshTool.UI.OffsetOption.ZInput.TextBox;
	XOffsetInput.FocusLost:Connect(function (EnterPressed)
		local NewOffset = tonumber(XOffsetInput.Text);
		SetAxisOffset('X', NewOffset);
	end);
	YOffsetInput.FocusLost:Connect(function (EnterPressed)
		local NewOffset = tonumber(YOffsetInput.Text);
		SetAxisOffset('Y', NewOffset);
	end);
	ZOffsetInput.FocusLost:Connect(function (EnterPressed)
		local NewOffset = tonumber(ZOffsetInput.Text);
		SetAxisOffset('Z', NewOffset);
	end);

	-- Enable the mesh ID input
	MeshIdInput.FocusLost:Connect(function (EnterPressed)
		SetMeshId(ParseAssetId(MeshIdInput.Text));
	end);

	-- Enable the texture ID input
	TextureIdInput.FocusLost:Connect(function (EnterPressed)
		SetTextureId(ParseAssetId(TextureIdInput.Text));
	end);

	-- Enable the vertex color/tint option
	local ColorPickerHandle = nil
	VertexColorInput.MouseButton1Click:Connect(function ()
		local CommonColor = VectorToColor(Support.IdentifyCommonProperty(GetMeshes(), 'VertexColor'))
		local ColorPickerElement = Roact.createElement(ColorPicker, {
			InitialColor = CommonColor or Color3.fromRGB(255, 255, 255);
			SetPreviewColor = function (Color)
				SetPreviewTint(ColorToVector(Color))
			end;
			OnConfirm = function (Color)
				SetProperty('VertexColor', ColorToVector(Color))
				ColorPickerHandle = Roact.unmount(ColorPickerHandle)
			end;
			OnCancel = function ()
				ColorPickerHandle = Roact.unmount(ColorPickerHandle)
			end;
		})
		ColorPickerHandle = ColorPickerHandle and
			Roact.update(ColorPickerHandle, ColorPickerElement) or
			Roact.mount(ColorPickerElement, Core.UI, 'ColorPicker')
	end)

	-- Enable the mesh adding button
	AddButton.Button.MouseButton1Click:Connect(function ()
		AddMeshes();
	end);
	RemoveButton.Button.MouseButton1Click:Connect(function ()
		RemoveMeshes();
	end);

	-- Hook up manual triggering
	local SignatureButton = MeshTool.UI:WaitForChild('Title'):WaitForChild('Signature')
	ListenForManualWindowTrigger(MeshTool.ManualText, MeshTool.Color.Color, SignatureButton)

	-- Update the UI every 0.1 seconds
	UIUpdater = Support.ScheduleRecurringTask(UpdateUI, 0.1);

end;

function UpdateUI()
	-- Updates information on the UI

	-- Make sure the UI's on
	if not MeshTool.UI then
		return;
	end;

	-- Get all meshes
	local Meshes = GetMeshes();

	-- Identify all common properties
	local MeshType = Support.IdentifyCommonProperty(Meshes, 'MeshType');
	local MeshId = Support.IdentifyCommonProperty(Meshes, 'MeshId');
	local TextureId = Support.IdentifyCommonProperty(Meshes, 'TextureId');
	local VertexColor = VectorToColor(Support.IdentifyCommonProperty(Meshes, 'VertexColor'));

	-- Check if there's a file mesh in the selection
	local FileMeshInSelection = false;
	for _, Mesh in pairs(GetMeshes()) do
		if Mesh.MeshType == Enum.MeshType.FileMesh then
			FileMeshInSelection = true;
			break;
		end;
	end;

	-- Identify common scales and offsets across axes
	local XScaleVariations, YScaleVariations, ZScaleVariations = {}, {}, {};
	local XOffsetVariations, YOffsetVariations, ZOffsetVariations = {}, {}, {};
	for _, Mesh in pairs(GetMeshes()) do
		table.insert(XScaleVariations, Support.Round(Mesh.Scale.X, 3));
		table.insert(YScaleVariations, Support.Round(Mesh.Scale.Y, 3));
		table.insert(ZScaleVariations, Support.Round(Mesh.Scale.Z, 3));
		table.insert(XOffsetVariations, Support.Round(Mesh.Offset.X, 3));
		table.insert(YOffsetVariations, Support.Round(Mesh.Offset.Y, 3));
		table.insert(ZOffsetVariations, Support.Round(Mesh.Offset.Z, 3));
	end;
	local CommonXScale = Support.IdentifyCommonItem(XScaleVariations);
	local CommonYScale = Support.IdentifyCommonItem(YScaleVariations);
	local CommonZScale = Support.IdentifyCommonItem(ZScaleVariations);
	local CommonXOffset = Support.IdentifyCommonItem(XOffsetVariations);
	local CommonYOffset = Support.IdentifyCommonItem(YOffsetVariations);
	local CommonZOffset = Support.IdentifyCommonItem(ZOffsetVariations);

	-- Shortcuts to updating UI elements
	local AddButton = MeshTool.UI.AddButton;
	local RemoveButton = MeshTool.UI.RemoveButton;
	local MeshIdInput = MeshTool.UI.MeshIdOption.TextBox;
	local TextureIdInput = MeshTool.UI.TextureIdOption.TextBox;
	local VertexColorIndicator = MeshTool.UI.TintOption.Indicator;
	local XScaleInput = MeshTool.UI.ScaleOption.XInput.TextBox;
	local YScaleInput = MeshTool.UI.ScaleOption.YInput.TextBox;
	local ZScaleInput = MeshTool.UI.ScaleOption.ZInput.TextBox;
	local XOffsetInput = MeshTool.UI.OffsetOption.XInput.TextBox;
	local YOffsetInput = MeshTool.UI.OffsetOption.YInput.TextBox;
	local ZOffsetInput = MeshTool.UI.OffsetOption.ZInput.TextBox;

	-- Update the inputs
	UpdateDataInputs {
		[MeshIdInput] = MeshId and ParseAssetId(MeshId) or MeshId or '*';
		[TextureIdInput] = TextureId and ParseAssetId(TextureId) or TextureId or '*';
		[XScaleInput] = CommonXScale or '*';
		[YScaleInput] = CommonYScale or '*';
		[ZScaleInput] = CommonZScale or '*';
		[XOffsetInput] = CommonXOffset or '*';
		[YOffsetInput] = CommonYOffset or '*';
		[ZOffsetInput] = CommonZOffset or '*';
	};
	UpdateColorIndicator(VertexColorIndicator, VertexColor);

	-- Update selection state
	local MeshTypeLabel = Support.FindTableOccurrence(MeshTypes, MeshType)
	if MeshTool.CurrentType ~= MeshTypeLabel then
		MeshTool.CurrentType = MeshTypeLabel
		MeshTool.OnTypeChanged:Fire(MeshTypeLabel)
	end

	AddButton.Visible = false;
	RemoveButton.Visible = false;
	MeshTool.UI.TypeOption.Visible = false;
	MeshIdInput.Parent.Visible = false;
	TextureIdInput.Parent.Visible = false;
	VertexColorIndicator.Parent.Visible = false;
	MeshTool.UI.ScaleOption.Visible = false;
	MeshTool.UI.OffsetOption.Visible = false;

	-- Update the UI to display options depending on the mesh type
	local DisplayedItems;
	if #Meshes == 0 then
		DisplayedItems = { AddButton };

	-- Each selected part has a mesh, including a file mesh
	elseif #Meshes == #Selection.Parts and FileMeshInSelection then
		DisplayedItems = { MeshTool.UI.TypeOption, MeshTool.UI.ScaleOption, MeshTool.UI.OffsetOption, MeshIdInput.Parent, TextureIdInput.Parent, VertexColorIndicator.Parent, RemoveButton };

	-- Each selected part has a mesh
	elseif #Meshes == #Selection.Parts and not FileMeshInSelection then
		DisplayedItems = { MeshTool.UI.TypeOption, MeshTool.UI.ScaleOption, MeshTool.UI.OffsetOption, RemoveButton };

	-- Only some selected parts have meshes, including a file mesh
	elseif #Meshes ~= #Selection.Parts and FileMeshInSelection then
		DisplayedItems = { AddButton, MeshTool.UI.TypeOption, MeshTool.UI.ScaleOption, MeshTool.UI.OffsetOption, MeshIdInput.Parent, TextureIdInput.Parent, VertexColorIndicator.Parent, RemoveButton };

	-- Only some selected parts have meshes
	elseif #Meshes ~= #Selection.Parts and not FileMeshInSelection then
		DisplayedItems = { AddButton, MeshTool.UI.TypeOption, MeshTool.UI.ScaleOption, MeshTool.UI.OffsetOption, RemoveButton };

	end;

	-- Display the relevant UI elements
	DisplayLinearLayout(DisplayedItems, MeshTool.UI, UDim2.new(0, 0, 0, 20), 10);

end;

function HideUI()
	-- Hides the tool UI

	-- Make sure there's a UI
	if not MeshTool.UI then
		return;
	end;

	-- Hide the UI
	MeshTool.UI.Visible = false;

	-- Stop updating the UI
	UIUpdater:Stop();

end;

function GetMeshes()
	-- Returns all the meshes in the selection

	local Meshes = {};

	-- Get any meshes from any selected parts
	for _, Part in pairs(Selection.Parts) do
		table.insert(Meshes, Support.GetChildOfClass(Part, 'SpecialMesh'));
	end;

	-- Return the meshes
	return Meshes;
end;

function ParseAssetId(Input)
	-- Returns the intended asset ID for the given input

	-- Get the ID number from the input
	local Id = tonumber(Input)
		or tonumber(Input:lower():match('%?id=([0-9]+)'))
		or tonumber(Input:match('/([0-9]+)/'))
		or tonumber(Input:lower():match('rbxassetid://([0-9]+)'));

	-- Return the ID
	return Id;
end;

function VectorToColor(Vector)
	-- Returns the Color3 with the values in the given Vector3

	-- Make sure that the given Vector3 is valid
	if not Vector then return end;

	-- Return the Color3
	return Color3.new(Vector.X, Vector.Y, Vector.Z);
end;

function ColorToVector(Color)
	-- Returns the Vector3 with the values in the given Color3

	-- Make sure that the given Color3 is valid
	if not Color then return end;

	-- Return the Vector3
	return Vector3.new(Color.r, Color.g, Color.b);
end;

function UpdateDataInputs(Data)
	-- Updates the data in the given TextBoxes when the user isn't typing in them

	-- Go through the inputs and data
	for Input, UpdatedValue in pairs(Data) do

		-- Makwe sure the user isn't typing into the input
		if not Input:IsFocused() then

			-- Set the input's value
			Input.Text = tostring(UpdatedValue);

		end;

	end;

end;

function UpdateColorIndicator(Indicator, Color)
	-- Updates the given color indicator

	-- If there is a single color, just display it
	if Color then
		Indicator.BackgroundColor3 = Color;
		Indicator.Varies.Text = '';

	-- If the colors vary, display a * on a gray background
	else
		Indicator.BackgroundColor3 = Color3.new(222/255, 222/255, 222/255);
		Indicator.Varies.Text = '*';
	end;

end;

function DisplayLinearLayout(Items, Container, StartPosition, Padding)

	-- Keep track of the total vertical extents of all items
	local Sum = 0;

	-- Go through each item
	for ItemIndex, Item in ipairs(Items) do

		-- Make the item visible
		Item.Visible = true;

		-- Position this item underneath the past items
		Item.Position = StartPosition + UDim2.new(
			Item.Position.X.Scale,
			Item.Position.X.Offset,
			0,
			Sum + Padding
		);

		-- Update the sum of item heights
		Sum = Sum + Padding + Item.AbsoluteSize.Y;

	end;

	-- Resize the container to fit the new layout
	Container.Size = UDim2.new(0, 200, 0, 30 + Sum);

end;

function AddMeshes()

	-- Prepare the change request for the server
	local Changes = {};

	-- Go through the selection
	for _, Part in pairs(Selection.Parts) do

		-- Make sure this part doesn't already have a mesh
		if not Support.GetChildOfClass(Part, 'SpecialMesh') then

			-- Queue a mesh to be created for this part
			table.insert(Changes, { Part = Part });

		end;

	end;

	-- Send the change request to the server
	local Meshes = Core.SyncAPI:Invoke('CreateMeshes', Changes);

	-- Put together the history record
	local HistoryRecord = {
		Meshes = Meshes;
		Selection = Selection.Items;

		Unapply = function (Record)
			-- Reverts this change

			-- Select changed parts
			Selection.Replace(Record.Selection)

			-- Remove the meshes
			Core.SyncAPI:Invoke('Remove', Record.Meshes);

		end;

		Apply = function (Record)
			-- Reapplies this change

			-- Restore the meshes
			Core.SyncAPI:Invoke('UndoRemove', Record.Meshes);

			-- Select changed parts
			Selection.Replace(Record.Selection)

		end;

	};

	-- Register the history record
	Core.History.Add(HistoryRecord);

end;

function RemoveMeshes()

	-- Get all the meshes in the selection
	local Meshes = GetMeshes();

	-- Create the history record
	local HistoryRecord = {
		Meshes = Meshes;
		Selection = Selection.Items;

		Unapply = function (Record)
			-- Reverts this change

			-- Restore the meshes
			Core.SyncAPI:Invoke('UndoRemove', Record.Meshes);

			-- Select changed parts
			Selection.Replace(Record.Selection)

		end;

		Apply = function (Record)
			-- Reapplies this change

			-- Select changed parts
			Selection.Replace(Record.Selection)

			-- Remove the meshes
			Core.SyncAPI:Invoke('Remove', Record.Meshes);

		end;

	};

	-- Send the removal request
	Core.SyncAPI:Invoke('Remove', Meshes);

	-- Register the history record
	Core.History.Add(HistoryRecord);

end;

local PreviewInitialState = nil

function SetPreviewTint(Tint)
	-- Previews the given tint on the selection

	-- Reset tints to initial state if previewing is over
	if not Tint and PreviewInitialState then
		for Mesh, State in pairs(PreviewInitialState) do
			Mesh.VertexColor = State.VertexColor
		end

		-- Clear initial state
		PreviewInitialState = nil

		-- Skip rest of function
		return

	-- Ensure valid tint is given
	elseif not Tint then
		return

	-- Save initial state if first time previewing
	elseif not PreviewInitialState then
		PreviewInitialState = {}
		for _, Mesh in pairs(GetMeshes()) do
			PreviewInitialState[Mesh] = { VertexColor = Mesh.VertexColor }
		end
	end

	-- Apply preview tint
	for Mesh in pairs(PreviewInitialState) do
		Mesh.VertexColor = Tint
	end
end

function SetProperty(Property, Value)

	-- Make sure the given value is valid
	if not Value then
		return;
	end;

	-- Start a history record
	TrackChange();

	-- Go through each mesh
	for _, Mesh in pairs(GetMeshes()) do

		-- Store the state of the mesh before modification
		table.insert(HistoryRecord.Before, { Part = Mesh.Parent, [Property] = Mesh[Property] });

		-- Create the change request for this mesh
		table.insert(HistoryRecord.After, { Part = Mesh.Parent, [Property] = Value });

	end;

	-- Register the changes
	RegisterChange();

end;

function SetAxisScale(Axis, Scale)
	-- Sets the selection's scale on axis `Axis` to `Scale`

	-- Start a history record
	TrackChange();

	-- Go through each mesh
	for _, Mesh in pairs(GetMeshes()) do

		-- Store the state of the mesh before modification
		table.insert(HistoryRecord.Before, { Part = Mesh.Parent, Scale = Mesh.Scale });

		-- Put together the changed scale
		local Scale = Vector3.new(
			Axis == 'X' and Scale or Mesh.Scale.X,
			Axis == 'Y' and Scale or Mesh.Scale.Y,
			Axis == 'Z' and Scale or Mesh.Scale.Z
		);

		-- Create the change request for this mesh
		table.insert(HistoryRecord.After, { Part = Mesh.Parent, Scale = Scale });

	end;

	-- Register the changes
	RegisterChange();

end;

function SetAxisOffset(Axis, Offset)
	-- Sets the selection's offset on axis `Axis` to `Offset`

	-- Start a history record
	TrackChange();

	-- Go through each mesh
	for _, Mesh in pairs(GetMeshes()) do

		-- Store the state of the mesh before modification
		table.insert(HistoryRecord.Before, { Part = Mesh.Parent, Offset = Mesh.Offset });

		-- Put together the changed scale
		local Offset = Vector3.new(
			Axis == 'X' and Offset or Mesh.Offset.X,
			Axis == 'Y' and Offset or Mesh.Offset.Y,
			Axis == 'Z' and Offset or Mesh.Offset.Z
		);

		-- Create the change request for this mesh
		table.insert(HistoryRecord.After, { Part = Mesh.Parent, Offset = Offset });

	end;

	-- Register the changes
	RegisterChange();

end;

function SetMeshId(AssetId)
	-- Sets the meshes in the selection's mesh ID to the intended, given mesh asset

	-- Make sure the given asset ID is valid
	if not AssetId then
		return;
	end;

	-- Prepare the change request
	local Changes = {
		MeshId = 'rbxassetid://' .. AssetId;
	};

	-- Attempt a mesh extraction on the given asset
	Core.Try(Core.SyncAPI.Invoke, Core.SyncAPI, 'ExtractMeshFromAsset', AssetId)
		:Then(function (ExtractionData)

			-- Ensure extraction succeeded
			assert(ExtractionData.success, 'Extraction failed');

			-- Apply any mesh found
			local MeshId = ExtractionData.meshID;
			if MeshId then
				Changes.MeshId = 'rbxassetid://' .. MeshId;
			end;

			-- Apply any texture found
			local TextureId = ExtractionData.textureID;
			if TextureId then
				Changes.TextureId = 'rbxassetid://' .. TextureId;
			end;

			-- Apply any vertex color found
			local VertexColor = ExtractionData.tint;
			if VertexColor then
				Changes.VertexColor = Vector3.new(VertexColor.x, VertexColor.y, VertexColor.z);
			end;

			-- Apply any scale found
			local Scale = ExtractionData.scale;
			if Scale then
				Changes.Scale = Vector3.new(Scale.x, Scale.y, Scale.z);
			end;

		end);

	-- Start a history record
	TrackChange();

	-- Go through each mesh
	for _, Mesh in pairs(GetMeshes()) do

		-- Create the history change requests for this mesh
		local Before, After = { Part = Mesh.Parent }, { Part = Mesh.Parent };

		-- Gather change information to finish up the history change requests
		for Property, Value in pairs(Changes) do
			Before[Property] = Mesh[Property];
			After[Property] = Value;
		end;

		-- Store the state of the mesh before modification
		table.insert(HistoryRecord.Before, Before);

		-- Create the change request for this mesh
		table.insert(HistoryRecord.After, After);

	end;

	-- Register the changes
	RegisterChange();

end;

function SetTextureId(AssetId)
	-- Sets the meshes in the selection's texture ID to the intended, given image asset

	-- Make sure the given asset ID is valid
	if not AssetId then
		return;
	end;

	-- Prepare the change request
	local Changes = {
		TextureId = 'rbxassetid://' .. AssetId;
	};

	-- Attempt an image extraction on the given asset
	Core.Try(Core.SyncAPI.Invoke, Core.SyncAPI, 'ExtractImageFromDecal', AssetId)
		:Then(function (ExtractedImage)
			Changes.TextureId = 'rbxassetid://' .. ExtractedImage;
		end);

	-- Start a history record
	TrackChange();

	-- Go through each mesh
	for _, Mesh in pairs(GetMeshes()) do

		-- Create the history change requests for this mesh
		local Before, After = { Part = Mesh.Parent }, { Part = Mesh.Parent };

		-- Gather change information to finish up the history change requests
		for Property, Value in pairs(Changes) do
			Before[Property] = Mesh[Property];
			After[Property] = Value;
		end;

		-- Store the state of the mesh before modification
		table.insert(HistoryRecord.Before, Before);

		-- Create the change request for this mesh
		table.insert(HistoryRecord.After, After);

	end;

	-- Register the changes
	RegisterChange();

end;

function TrackChange()

	-- Start the record
	HistoryRecord = {
		Before = {};
		After = {};
		Selection = Selection.Items;

		Unapply = function (Record)
			-- Reverts this change

			-- Select the changed parts
			Selection.Replace(Record.Selection)

			-- Send the change request
			Core.SyncAPI:Invoke('SyncMesh', Record.Before);

		end;

		Apply = function (Record)
			-- Applies this change

			-- Select the changed parts
			Selection.Replace(Record.Selection)

			-- Send the change request
			Core.SyncAPI:Invoke('SyncMesh', Record.After);

		end;

	};

end;

function RegisterChange()
	-- Finishes creating the history record and registers it

	-- Make sure there's an in-progress history record
	if not HistoryRecord then
		return;
	end;

	-- Send the change to the server
	Core.SyncAPI:Invoke('SyncMesh', HistoryRecord.After);

	-- Register the record and clear the staging
	Core.History.Add(HistoryRecord);
	HistoryRecord = nil;

end;


Prompt: --SIREN CONTROLS

Response:
HUB.Sound.Off.MouseButton1Click:connect(function()
	carSeat.Parent.Body.Lightbar.M.Wail:Stop()
	carSeat.Parent.Body.Lightbar.M.Yelp:Stop()
	carSeat.Parent.Body.Lightbar.M.Priority:Stop()
	HUB.Sound.Off.BackgroundColor3 = Color3.new(255,0,0)
	HUB.Sound.P.BackgroundColor3 = Color3.new(0,0,0)
	HUB.Sound.W.BackgroundColor3 = Color3.new(0,0,0)
	HUB.Sound.Y.BackgroundColor3 = Color3.new(0,0,0)
end)
HUB.Sound.P.MouseButton1Click:connect(function()
	carSeat.Parent.Body.Lightbar.M.Wail:Stop()
	carSeat.Parent.Body.Lightbar.M.Yelp:Stop()
	carSeat.Parent.Body.Lightbar.M.Priority:Play()
	HUB.Sound.P.BackgroundColor3 = Color3.new(255,0,0)
	HUB.Sound.Off.BackgroundColor3 = Color3.new(0,0,0)
	HUB.Sound.W.BackgroundColor3 = Color3.new(0,0,0)
	HUB.Sound.Y.BackgroundColor3 = Color3.new(0,0,0)
end)
HUB.Sound.W.MouseButton1Click:connect(function()
	carSeat.Parent.Body.Lightbar.M.Wail:Play()
	carSeat.Parent.Body.Lightbar.M.Yelp:Stop()
	carSeat.Parent.Body.Lightbar.M.Priority:Stop()
	HUB.Sound.W.BackgroundColor3 = Color3.new(255,0,0)
	HUB.Sound.P.BackgroundColor3 = Color3.new(0,0,0)
	HUB.Sound.Off.BackgroundColor3 = Color3.new(0,0,0)
	HUB.Sound.Y.BackgroundColor3 = Color3.new(0,0,0)
end)
HUB.Sound.Y.MouseButton1Click:connect(function()
	carSeat.Parent.Body.Lightbar.M.Wail:Stop()
	carSeat.Parent.Body.Lightbar.M.Yelp:Play()
	carSeat.Parent.Body.Lightbar.M.Priority:Stop()
	HUB.Sound.Y.BackgroundColor3 = Color3.new(255,0,0)
	HUB.Sound.P.BackgroundColor3 = Color3.new(0,0,0)
	HUB.Sound.W.BackgroundColor3 = Color3.new(0,0,0)
	HUB.Sound.Off.BackgroundColor3 = Color3.new(0,0,0)
end)


Prompt:
----- MAGIC NUMBERS ABOUT THE TOOL -----
-- How much damage a bullet does

Response: local Damage = 8


Prompt:
--				new.Pname.Position = UDim2.new(0,0,0,80)
--				new.Pname.Size = UDim2.new(1,0,1,0)

Response:
			end

			new.Parent = sf--Parent to scrolling frame
		end

		wait()
		sf.Size = UDim2.new(0.6,0,0,ui.AbsoluteContentSize.Y)
		sf.CanvasSize = UDim2.new(0,0,0,ui.AbsoluteContentSize.Y)
		--Give enough room for the frames to sit in
	end
	wait(1)
end


Prompt:
-- -- -- -- -- -- --
--DIRECTION SCROLL--
-- -- -- -- -- -- --

Response:
Elevator:WaitForChild("Direction").Changed:connect(function(val)
	if val == 1 then
		SetDisplay(1,"U1",9)
		wait(3)
		SetDisplay(1,"NIL",9)
	elseif val == -1 then
		SetDisplay(1,"D1",9)
		wait(3)
		SetDisplay(1,"NIL",9)
	else
		SetDisplay(1,"NIL",9)
	end
end)


Prompt:
-- Compare two strings character-by-character.
-- Optionally clean up small common substrings, also known as chaff.

Response:
function diffStringsRaw(a: string, b: string, cleanup: boolean): Array<Diff>
	local diffs = diffStrings(a, b)

	if cleanup then
		cleanupSemantic(diffs) -- impure function
	end

	return diffs
end

return {
	diffStringsUnified = diffStringsUnified,
	diffStringsRaw = diffStringsRaw,
}


Prompt: --// Gun Parts

Response:
local L_23_ = L_1_.Bolt
local L_24_ = L_1_.Mag
local L_25_ = L_1_.FirePart
local L_26_ = L_4_:WaitForChild('FX')
local L_27_


Prompt: --You can change the values below to suit your needs

Response:
local max_mode = 8 --The maximum amount of modes forwards. Set to 0 to disable forwards motion.

local min_mode = -8 --The minimum amount of modes backwards. Set to 0 to disable backwards motion.

local increment_speed = 0.5 --The amount in which the speed value increments with every mode.


Response:
local door1 = script.Parent.Door1
local door2 = script.Parent.Door2

local vaf = script.Parent.Values
local caf = script.Parent.Calls
local sef = script.Parent.Settings


Prompt: -- UI elements

Response:
local intro = script.Parent:WaitForChild("Intro")
intro.Visible = true

local tokensLabel = script.Parent:WaitForChild("Tokens") -- textlabel
local tokens = game.Players.LocalPlayer:WaitForChild("Tokens") -- value

wait(2)

game.Workspace.Camera.CameraType = Enum.CameraType.Scriptable
game.Workspace.Camera.CFrame = CFrame.new(game.Workspace.IntroTunnel.CameraOrigin.Position,game.Workspace.IntroTunnel.CameraFace.Position)

local topStatus = script.Parent:WaitForChild("TopStatus")
topStatus.Text = status.Value

status:GetPropertyChangedSignal("Value"):Connect(function()
	topStatus.Text = status.Value
end)

tokensLabel.Text = tokens.Value
tokens:GetPropertyChangedSignal("Value"):Connect(function()
	tokensLabel.Text = tokens.Value
end)

intro.Play.MouseButton1Click:Connect(function()

	if game.ReplicatedStorage.MapVoting.Value == true then
		script.Parent.MapVoting.Visible = true
	end

	intro.Visible = false
	topStatus.Visible = true
	game.ReplicatedStorage.MenuPlay:FireServer()
	game.Workspace.Camera.CameraType = Enum.CameraType.Custom
end)

game.ReplicatedStorage.KillFeed.OnClientEvent:Connect(function(text)
	script.Parent.KillFeed.Visible = true
	script.Parent.KillFeed.Text = text
	wait(2)
	script.Parent.KillFeed.Visible = false
end)

game.ReplicatedStorage.Announcement.OnClientEvent:Connect(function(text)
	script.Parent.Announcement.Text = text
	script.Parent.Announcement.Visible = true
	wait(5)
	script.Parent.Announcement.Visible = false
end)

intro.Store.MouseButton1Click:Connect(function()
	script.Parent:WaitForChild("Shop").Visible = true
	intro.Visible = false
end)

script.Parent.ShopBtn.MouseButton1Click:Connect(function()
	script.Parent.Shop.Visible = not script.Parent.Shop.Visible
end)

script.Parent:WaitForChild("Shop"):WaitForChild("Close").MouseButton1Click:Connect(function()
	if game.Players.LocalPlayer:FindFirstChild("InMenu") then
		intro.Visible = true
	end
	script.Parent:WaitForChild("Shop").Visible = false
end)


Prompt: --// All global vars will be wiped/replaced except script

Response:
return function(data)
	local playergui = service.PlayerGui
	local localplayer = service.Players.LocalPlayer

	local frame = script.Parent.Parent
	local close = frame.Frame.Close
	local main = frame.Frame.Main
	local title = frame.Frame.Title
	local timer = frame.Frame.Timer

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

	local name = data.Title
	local text = data.Message or data.Text or ""
	local time = data.Time

	local returner = nil

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

	--client.UI.Make("NotificationHolder")
	local holder = client.UI.Get("NotificationHolder",nil,true)
	if not holder then
		local hold = service.New("ScreenGui")
		local hTable = client.UI.Register(hold)
		local frame = service.New("ScrollingFrame", hold)
		client.UI.Prepare(hold)
		hTable.Name = "NotificationHolder"
		frame.Name = "Frame"
		frame.BackgroundTransparency = 1
		frame.Size = UDim2.new(0, 200, 0.5, 0)
		frame.Position = UDim2.new(1, -210, 0.5, -10)
		frame.CanvasSize = UDim2.new(0, 0, 0, 0)
		frame.ChildAdded:Connect(function(c)
			if #frame:GetChildren() == 0 then
				frame.Visible = false
			else
				frame.Visible = true
			end
		end)

		frame.ChildRemoved:Connect(function(c)
			if #frame:GetChildren() == 0 then
				frame.Visible = false
			else
				frame.Visible = true
			end
		end)

		holder = hTable
		hTable:Ready()
	end

	local function moveGuis(holder,mod)
		local holdstuff = {}
		for i,v in pairs(holder:GetChildren()) do
			table.insert(holdstuff,1,v)
		end
		for i,v in pairs(holdstuff) do
			v.Position = UDim2.new(0,0,1,-75*(i+mod))
		end
		holder.CanvasSize=UDim2.new(0,0,0,(#holder:GetChildren()*75))
		local pos = (((#holder:GetChildren())*75) - holder.AbsoluteWindowSize.Y)
		if pos<0 then pos = 0 end
		holder.CanvasPosition = Vector2.new(0,pos)
	end

	holder = holder.Object.Frame
	title.Text = name
	frame.Name = name
	main.Text = text

	main.MouseButton1Click:Connect(function()
		if frame and frame.Parent then
			if clickfunc then
				returner = clickfunc()
			end
			frame:Destroy()
			moveGuis(holder,0)
		end
	end)

	close.MouseButton1Click:Connect(function()
		if frame and frame.Parent then
			if closefunc then
				returner = closefunc()
			end
			gTable:Destroy()
			moveGuis(holder,0)
		end
	end)

	moveGuis(holder,1)
	frame.Parent = holder
	frame:TweenPosition(UDim2.new(0,0,1,-75),'Out','Linear',0.2)

	spawn(function()
		local sound = Instance.new("Sound",service.LocalContainer())
		sound.SoundId = 'http://www.roblox.com/asset/?id='.."203785584"--client.NotificationSound
		sound.Volume = 0.2
		wait(0.1)
		sound:Play()
		wait(0.5)
		sound:Destroy()
	end)

	if time then
		timer.Visible = true
		spawn(function()
			repeat
				timer.Text = time
				--timer.Size=UDim2.new(0,timer.TextBounds.X,0,10)
				wait(1)
				time = time-1
			until time<=0 or not frame or not frame.Parent

			if frame and frame.Parent then
				if ignorefunc then
					returner = ignorefunc()
				end
				frame:Destroy()
				moveGuis(holder,0)
			end
		end)
	end

	repeat wait() until returner ~= nil or not frame or not frame.Parent

	return returner
end


Prompt: --// All global vars will be wiped/replaced except script

Response:
return function(data)
	local gui = script.Parent.Parent--client.UI.Prepare(script.Parent.Parent)
	local frame = gui.Frame
	local frame2 = frame.Frame
	local msg = frame2.Message
	local ttl = frame2.Title

	local gIndex = data.gIndex
	local gTable = data.gTable

	local title = data.Title
	local message = data.Message
	local scroll = data.Scroll
	local tim = data.Time

	local gone = false

	if not data.Message or not data.Title then gTable:Destroy() end

	ttl.Text = title
	msg.Text = message
	ttl.TextTransparency = 1
	msg.TextTransparency = 1
	ttl.TextStrokeTransparency = 1
	msg.TextStrokeTransparency = 1
	frame.BackgroundTransparency = 1

	local fadeSteps = 10
	local blurSize = 10
	local textFade = 0.1
	local strokeFade = 0.5
	local frameFade = frame.BackgroundTransparency

	local blurStep = blurSize/fadeSteps
	local frameStep = frameFade/fadeSteps
	local textStep = 0.1
	local strokeStep = 0.1

	local function fadeIn()
		gTable:Ready()
		for i = 1,fadeSteps do
			if msg.TextTransparency>textFade then
				msg.TextTransparency = msg.TextTransparency-textStep
				ttl.TextTransparency = ttl.TextTransparency-textStep
			end
			if msg.TextStrokeTransparency>strokeFade then
				msg.TextStrokeTransparency = msg.TextStrokeTransparency-strokeStep
				ttl.TextStrokeTransparency = ttl.TextStrokeTransparency-strokeStep
			end
			if frame.BackgroundTransparency>frameFade then
				frame.BackgroundTransparency = frame.BackgroundTransparency-frameStep
				--frame2.BackgroundTransparency = frame.BackgroundTransparency
			end
			service.Wait("Stepped")
		end
	end

	local function fadeOut()
		if not gone then
			gone = true
			for i = 1,fadeSteps do
				if msg.TextTransparency<1 then
					msg.TextTransparency = msg.TextTransparency+textStep
					ttl.TextTransparency = ttl.TextTransparency+textStep
				end
				if msg.TextStrokeTransparency<1 then
					msg.TextStrokeTransparency = msg.TextStrokeTransparency+strokeStep
					ttl.TextStrokeTransparency = ttl.TextStrokeTransparency+strokeStep
				end
				if frame.BackgroundTransparency<1 then
					frame.BackgroundTransparency = frame.BackgroundTransparency+frameStep
					frame2.BackgroundTransparency = frame.BackgroundTransparency
				end
				service.Wait("Stepped")
			end
			service.UnWrap(gui):Destroy()
		end
	end

	gTable.CustomDestroy = function()
		fadeOut()
	end

	fadeIn()
	if not tim then
		local _,time = message:gsub(" ","")
		time = math.clamp(time/2,4,11)+1
		wait(time)
	else
		wait(tim)
	end
	if not gone then
		fadeOut()
	end
end


Prompt: --STATREADER:WaitForChild("Close")

Response:
car:WaitForChild("STATREADER")
local STATREADER = car.STATREADER:WaitForChild("Frame")
STATREADER:WaitForChild("C")
STATREADER:WaitForChild("FD")
STATREADER:WaitForChild("FI")
STATREADER:WaitForChild("HP")
STATREADER:WaitForChild("HPB")
STATREADER:WaitForChild("IC")
STATREADER:WaitForChild("N")
STATREADER:WaitForChild("P2W")
STATREADER:WaitForChild("PSI")
STATREADER:WaitForChild("TS")
STATREADER:WaitForChild("Tires")
STATREADER:WaitForChild("W")
STATREADER:WaitForChild("Logo1")
STATREADER:WaitForChild("Logo2")

local function RoundNumber(Number, Divider)
	Divider = Divider or 1
	return (math.floor((Number/Divider)+0.5)*Divider)
end

if STATREADER:FindFirstChild("Logo1") and STATREADER:FindFirstChild("Logo2") then
	if STATREADER.Logo1.Image == "rbxassetid://1112860376" and STATREADER.Logo2.Image == "rbxassetid://1112860376" and STATREADER.Logo2.ImageTransparency == 0 then

		--[[STATREADER.Close.MouseButton1Click:connect(function()
			STATREADER.Parent:Destroy()
		end)]]

		if _Tune.CompressRatio ~= nil then
			STATREADER.C.Text = "Compression: ".._Tune.CompressRatio
		else
			STATREADER.C.Text = "Compression: Data Not Available"
		end

		if _Tune.Horsepower ~= nil then
			STATREADER.HP.Text = "N/A Power: "..RoundNumber(_Tune.Horsepower,1).."hp"
		else
			STATREADER.HP.Text = "N/A Power: Data Not Available"
		end

		if _Tune.Horsepower ~= nil and _Tune.Boost ~= nil and _Tune.CompressRatio ~= nil and _Tune.Aspiration ~= nil then
			if _Tune.Aspiration == "Single" then
				STATREADER.HPB.Text = "Boosted Power: "..RoundNumber(_Tune.Horsepower+(_Tune.Horsepower*((((1*_Tune.Boost*1)*(_Tune.CompressRatio/10))/7.5))/2),1).."hp"
				STATREADER.PSI.Text = "Turbo Psi: ".._Tune.Boost.."psi"
				STATREADER.TS.Text = "Turbo Size: ".._Tune.TurboSize.."mm"
			elseif _Tune.Aspiration == "Double" then
				STATREADER.HPB.Text = "Boosted Power: "..RoundNumber(_Tune.Horsepower+(_Tune.Horsepower*((((1*_Tune.Boost*2)*(_Tune.CompressRatio/10))/7.5))/2),1).."hp"
				STATREADER.PSI.Text = "Turbo Psi: ".._Tune.Boost.."psi x2"
				STATREADER.TS.Text = "Turbo Size: ".._Tune.TurboSize.."mm x2"
			elseif _Tune.Aspiration == "Natural" then
				STATREADER.HPB.Text = "Boosted Power: Data Not Available"
				STATREADER.PSI.Text = "Turbo Psi: Data Not Available"
				STATREADER.TS.Text = "Turbo Size: Data Not Available"
			end
		else
			STATREADER.HPB.Text = "Boosted Power: Data Not Available"
			STATREADER.PSI.Text = "Turbo Psi: Data Not Available"
			STATREADER.TS.Text = "Turbo Size: Data Not Available"
		end

		if _Tune.InclineComp ~= nil then
			STATREADER.IC.Text = "InclineComp: ".._Tune.InclineComp
		else
			STATREADER.IC.Text = "InclineComp: Data Not Available"
		end

		STATREADER.N.Text = "Name: "..car.Name

		if _Tune.Weight ~= nil then
			STATREADER.W.Text = "Weight: ".._Tune.Weight.."lbs"
		else
			STATREADER.W.Text = "Weight: Data Not Available"
		end

		if _Tune.Aspiration ~= nil then
			STATREADER.FI.Text = "Forced Induction: ".._Tune.Aspiration
		else
			STATREADER.FI.Text = "Forced Induction: Data Not Available"
		end

		if _Tune.FDMult ~= nil then
			STATREADER.FD.Text = "FDMultiplier: ".._Tune.FDMult
		else
			STATREADER.FD.Text = "FDMultiplier: Data Not Available"
		end

		if _Tune.Horsepower ~= nil and _Tune.Weight ~= nil then
			if _Tune.Boost ~= nil and _Tune.CompressRatio ~= nil and _Tune.Aspiration ~= nil then
				if _Tune.Aspiration == "Single" then
					STATREADER.P2W.Text = "P/W Ratio: "..RoundNumber((_Tune.Horsepower+(_Tune.Horsepower*((((1*_Tune.Boost*1)*(_Tune.CompressRatio/10))/7.5))/2))/_Tune.Weight,.0001)
				elseif _Tune.Aspiration == "Double" then
					STATREADER.P2W.Text = "P/W Ratio: "..RoundNumber((_Tune.Horsepower+(_Tune.Horsepower*((((1*_Tune.Boost*2)*(_Tune.CompressRatio/10))/7.5))/2))/_Tune.Weight,.0001)
				elseif _Tune.Aspiration == "Natural" then
					STATREADER.P2W.Text = "P/W Ratio: "..RoundNumber(_Tune.Horsepower/_Tune.Weight,.0001)
				end
			else
				STATREADER.P2W.Text = "P/W Ratio: "..RoundNumber(_Tune.Horsepower/_Tune.Weight,.0001)
			end
		else
			STATREADER.P2W.Text = "P/W Ratio: Data Not Available"
		end

		if car.DriveSeat.TireStats.Fwear.Value == .2 and car.DriveSeat.TireStats.Ffriction.Value > .579 and car.DriveSeat.TireStats.Ffriction.Value < .631 and car.DriveSeat.TireStats.Fminfriction.Value == .35 and car.DriveSeat.TireStats.Ffweight.Value == 2 and car.DriveSeat.TireStats.TCS.Value == 1 and car.DriveSeat.TireStats.Lock.Value == 1/6 and car.DriveSeat.TireStats.Spin.Value == 1/1.2 and car.DriveSeat.TireStats.Rwear.Value == .2 and car.DriveSeat.TireStats.Rfriction.Value > .579 and car.DriveSeat.TireStats.Rfriction.Value < .631 and car.DriveSeat.TireStats.Rminfriction.Value == .35 and car.DriveSeat.TireStats.Rfweight.Value == 2 and car.DriveSeat.TireStats.Reg.Value == 3.6 then
			STATREADER.Tires.Text = "Tires: All Season"
		elseif car.DriveSeat.TireStats.Fwear.Value == 30 and car.DriveSeat.TireStats.Ffriction.Value > 1.179 and car.DriveSeat.TireStats.Ffriction.Value < 1.231 and car.DriveSeat.TireStats.Fminfriction.Value == .35 and car.DriveSeat.TireStats.Ffweight.Value == 1 and car.DriveSeat.TireStats.TCS.Value == 1 and car.DriveSeat.TireStats.Lock.Value == 1/6 and car.DriveSeat.TireStats.Spin.Value == 1/1.2 and car.DriveSeat.TireStats.Rwear.Value == 30 and car.DriveSeat.TireStats.Rfriction.Value > 1.179 and car.DriveSeat.TireStats.Rfriction.Value < 1.231 and car.DriveSeat.TireStats.Rminfriction.Value == .35 and car.DriveSeat.TireStats.Rfweight.Value == 1 and car.DriveSeat.TireStats.Reg.Value == 20 then
			STATREADER.Tires.Text = "Tires: Drag Radials"
		elseif car.DriveSeat.TireStats.Fwear.Value == .3 and car.DriveSeat.TireStats.Ffriction.Value > .479 and car.DriveSeat.TireStats.Ffriction.Value < .531 and car.DriveSeat.TireStats.Fminfriction.Value == .35 and car.DriveSeat.TireStats.Ffweight.Value == 10 and car.DriveSeat.TireStats.TCS.Value == 1 and car.DriveSeat.TireStats.Lock.Value == 1/6 and car.DriveSeat.TireStats.Spin.Value == 1/1.2 and car.DriveSeat.TireStats.Rwear.Value == .3 and car.DriveSeat.TireStats.Rfriction.Value > .479 and car.DriveSeat.TireStats.Rfriction.Value < .531 and car.DriveSeat.TireStats.Rminfriction.Value == .35 and car.DriveSeat.TireStats.Rfweight.Value == 10 and car.DriveSeat.TireStats.Reg.Value == 3.6 then
			STATREADER.Tires.Text = "Tires: All Terrain"
		elseif car.DriveSeat.TireStats.Fwear.Value == .5 and car.DriveSeat.TireStats.Ffriction.Value > .729 and car.DriveSeat.TireStats.Ffriction.Value < .781 and car.DriveSeat.TireStats.Fminfriction.Value == .35 and car.DriveSeat.TireStats.Ffweight.Value == .6 and car.DriveSeat.TireStats.TCS.Value == 1 and car.DriveSeat.TireStats.Lock.Value == 1/6 and car.DriveSeat.TireStats.Spin.Value == 1/1.2 and car.DriveSeat.TireStats.Rwear.Value == .5 and car.DriveSeat.TireStats.Rfriction.Value > .729 and car.DriveSeat.TireStats.Rfriction.Value < .781 and car.DriveSeat.TireStats.Rminfriction.Value == .35 and car.DriveSeat.TireStats.Rfweight.Value == .6 and car.DriveSeat.TireStats.Reg.Value == 3.6 then
			STATREADER.Tires.Text = "Tires: Semi Slicks"
		elseif car.DriveSeat.TireStats.Fwear.Value == .6 and car.DriveSeat.TireStats.Ffriction.Value > .879 and car.DriveSeat.TireStats.Ffriction.Value < .931 and car.DriveSeat.TireStats.Fminfriction.Value == .35 and car.DriveSeat.TireStats.Ffweight.Value == .6 and car.DriveSeat.TireStats.TCS.Value == 1 and car.DriveSeat.TireStats.Lock.Value == 1/6 and car.DriveSeat.TireStats.Spin.Value == 1/1.2 and car.DriveSeat.TireStats.Rwear.Value == .6 and car.DriveSeat.TireStats.Rfriction.Value > .879 and car.DriveSeat.TireStats.Rfriction.Value < .931 and car.DriveSeat.TireStats.Rminfriction.Value == .35 and car.DriveSeat.TireStats.Rfweight.Value == .6 and car.DriveSeat.TireStats.Reg.Value == 3.6 then
			STATREADER.Tires.Text = "Tires: Slicks"
		elseif car.DriveSeat.TireStats.Fwear.Value == 0 and car.DriveSeat.TireStats.Ffriction.Value == 0 and car.DriveSeat.TireStats.Fminfriction.Value == 0 and car.DriveSeat.TireStats.Ffweight.Value == 0 and car.DriveSeat.TireStats.TCS.Value == 0 and car.DriveSeat.TireStats.Lock.Value == 0 and car.DriveSeat.TireStats.Spin.Value == 0 and car.DriveSeat.TireStats.Rwear.Value == 0 and car.DriveSeat.TireStats.Rfriction.Value == 0 and car.DriveSeat.TireStats.Rminfriction.Value == 0 and car.DriveSeat.TireStats.Rfweight.Value == 0 and car.DriveSeat.TireStats.Reg.Value == 0 then
			STATREADER.Tires.Text = "Tires: Car Not Initialized"
		else
			STATREADER.Tires.Text = "Tires: Not Standard"
		end

		script:Destroy()
	else
		STATREADER.N.Text = "This is a product of Autoclub"
		STATREADER.C.Text = "So now restore the script to its original conditions,"
		STATREADER.HP.Text = "Why are you trying to remove the logos?"
		STATREADER.HPB.Text = "it will be very appreciated,"
		STATREADER.PSI.Text = "Idk man theres nothing wrong with showing the fact that you use our stuff,"
		STATREADER.IC.Text = "don't do this, its very very petty"
		STATREADER.W.Text = "and especially if you're from another community"
		STATREADER.FI.Text = "Dont you think its kinda petty to remove the credits?"
		STATREADER.FD.Text = "and you're a HR"
		STATREADER.TS.Text = "you know you can be better than that,"
		STATREADER.P2W.Text = "and it is a sign of maturity."
		STATREADER.Tires.Text = "-Autoclub Tire System"
	end
else
	STATREADER.N.Text = "This is a product of Autoclub"
	STATREADER.C.Text = "So now restore the script to its original conditions,"
	STATREADER.HP.Text = "Why are you trying to remove the logos?"
	STATREADER.HPB.Text = "it will be very appreciated,"
	STATREADER.PSI.Text = "Idk man theres nothing wrong with showing the fact that you use our stuff,"
	STATREADER.IC.Text = "don't do this, its very very petty"
	STATREADER.W.Text = "and especially if you're from another community"
	STATREADER.FI.Text = "Dont you think its kinda petty to remove the credits?"
	STATREADER.FD.Text = "and you're a HR"
	STATREADER.TS.Text = "you know you can be better than that,"
	STATREADER.P2W.Text = "and it is a sign of maturity."
	STATREADER.Tires.Text = "-Autoclub Tire System"
end


Prompt: -- Movement mode standardized to Enum.ComputerCameraMovementMode values

Response:
function ClassicCamera:SetCameraMovementMode( cameraMovementMode )
	BaseCamera.SetCameraMovementMode(self,cameraMovementMode)
	self.isFollowCamera = cameraMovementMode == Enum.ComputerCameraMovementMode.Follow
end

function ClassicCamera:Test()
	print("ClassicCamera:Test()")
end

function ClassicCamera:Update()
	local now = tick()
	local timeDelta = (now - self.lastUpdate)

	local camera = 	workspace.CurrentCamera
	local newCameraCFrame = camera.CFrame
	local newCameraFocus = camera.Focus
	local overrideCameraLookVector = nil
	if self.resetCameraAngle then
		local rootPart = self:GetHumanoidRootPart()
		if rootPart then
			overrideCameraLookVector = (rootPart.CFrame * INITIAL_CAMERA_ANGLE).lookVector
		else
			overrideCameraLookVector = INITIAL_CAMERA_ANGLE.lookVector
		end
		self.resetCameraAngle = false
	end

	local player = PlayersService.LocalPlayer
	local humanoid = self:GetHumanoid()
	local cameraSubject = camera.CameraSubject
	local isInVehicle = cameraSubject and cameraSubject:IsA('VehicleSeat')
	local isOnASkateboard = cameraSubject and cameraSubject:IsA('SkateboardPlatform')
	local isClimbing = humanoid and humanoid:GetState() == Enum.HumanoidStateType.Climbing

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

	if self.lastUpdate then
		local gamepadRotation = self:UpdateGamepad()

		if self:ShouldUseVRRotation() then
			self.rotateInput = self.rotateInput + self:GetVRRotationInput()
		else
			-- Cap out the delta to 0.1 so we don't get some crazy things when we re-resume from
			local delta = math.min(0.1, timeDelta)

			if gamepadRotation ~= ZERO_VECTOR2 then
				self.rotateInput = self.rotateInput + (gamepadRotation * delta)
			end

			local angle = 0
			if not (isInVehicle or isOnASkateboard) then
				angle = angle + (self.turningLeft and -120 or 0)
				angle = angle + (self.turningRight and 120 or 0)
			end

			if angle ~= 0 then
				self.rotateInput = self.rotateInput +  Vector2.new(math.rad(angle * delta), 0)
			end
		end
	end

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

	local userRecentlyPannedCamera = now - self.lastUserPanCamera < TIME_BEFORE_AUTO_ROTATE
	local subjectPosition = self:GetSubjectPosition()

	if subjectPosition and player and camera then
		local zoom = self:GetCameraToSubjectDistance()
		if zoom < 0.5 then
			zoom = 0.5
		end

		if self:GetIsMouseLocked() and not self:IsInFirstPerson() then
			-- We need to use the right vector of the camera after rotation, not before
			local newLookCFrame = self:CalculateNewLookCFrame(overrideCameraLookVector)

			local offset = self:GetMouseLockOffset()
			local cameraRelativeOffset = offset.X * newLookCFrame.rightVector + offset.Y * newLookCFrame.upVector + offset.Z * newLookCFrame.lookVector

			--offset can be NAN, NAN, NAN if newLookVector has only y component
			if Util.IsFiniteVector3(cameraRelativeOffset) then
				subjectPosition = subjectPosition + cameraRelativeOffset
			end
		else
			if not self.userPanningTheCamera and self.lastCameraTransform then

				local isInFirstPerson = self:IsInFirstPerson()

				if (isInVehicle or isOnASkateboard or (self.isFollowCamera and isClimbing)) and self.lastUpdate and humanoid and humanoid.Torso then
					if isInFirstPerson then
						if self.lastSubjectCFrame and (isInVehicle or isOnASkateboard) and cameraSubject:IsA('BasePart') then
							local y = -Util.GetAngleBetweenXZVectors(self.lastSubjectCFrame.lookVector, cameraSubject.CFrame.lookVector)
							if Util.IsFinite(y) then
								self.rotateInput = self.rotateInput + Vector2.new(y, 0)
							end
							tweenSpeed = 0
						end
					elseif not userRecentlyPannedCamera then
						local forwardVector = humanoid.Torso.CFrame.lookVector
						if isOnASkateboard then
							forwardVector = cameraSubject.CFrame.lookVector
						end

						tweenSpeed = Util.Clamp(0, tweenMaxSpeed, tweenSpeed + tweenAcceleration * timeDelta)

						local percent = Util.Clamp(0, 1, tweenSpeed * timeDelta)
						if self:IsInFirstPerson() and not (self.isFollowCamera and self.isClimbing) then
							percent = 1
						end

						local y = Util.GetAngleBetweenXZVectors(forwardVector, self:GetCameraLookVector())
						if Util.IsFinite(y) and math.abs(y) > 0.0001 then
							self.rotateInput = self.rotateInput + Vector2.new(y * percent, 0)
						end
					end

				elseif self.isFollowCamera and (not (isInFirstPerson or userRecentlyPannedCamera) and not VRService.VREnabled) then
					-- Logic that was unique to the old FollowCamera module
					local lastVec = -(self.lastCameraTransform.p - subjectPosition)

					local y = Util.GetAngleBetweenXZVectors(lastVec, self:GetCameraLookVector())

					-- This cutoff is to decide if the humanoid's angle of movement,
					-- relative to the camera's look vector, is enough that
					-- we want the camera to be following them. The point is to provide
					-- a sizable dead zone to allow more precise forward movements.
					local thetaCutoff = 0.4

					-- Check for NaNs
					if Util.IsFinite(y) and math.abs(y) > 0.0001 and math.abs(y) > thetaCutoff * timeDelta then
						self.rotateInput = self.rotateInput + Vector2.new(y, 0)
					end
				end
			end
		end

		if not self.isFollowCamera then
			local VREnabled = VRService.VREnabled

			if VREnabled then
				newCameraFocus = self:GetVRFocus(subjectPosition, timeDelta)
			else
				newCameraFocus = CFrame.new(subjectPosition)
			end

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

				-- Only move the camera if it exceeded a maximum distance to the subject in VR
				if distToSubject > zoom or self.rotateInput.x ~= 0 then
					local desiredDist = math.min(distToSubject, zoom)
					vecToSubject = self:CalculateNewLookVectorVR() * desiredDist
					local newPos = cameraFocusP - vecToSubject
					local desiredLookDir = camera.CFrame.lookVector
					if self.rotateInput.x ~= 0 then
						desiredLookDir = vecToSubject
					end
					local lookAt = Vector3.new(newPos.x + desiredLookDir.x, newPos.y, newPos.z + desiredLookDir.z)
					self.rotateInput = ZERO_VECTOR2

					newCameraCFrame = CFrame.new(newPos, lookAt) + Vector3.new(0, cameraHeight, 0)
				end
			else
				local newLookVector = self:CalculateNewLookVector(overrideCameraLookVector)
				self.rotateInput = ZERO_VECTOR2
				newCameraCFrame = CFrame.new(cameraFocusP - (zoom * newLookVector), cameraFocusP)
			end
		else -- is FollowCamera
			local newLookVector = self:CalculateNewLookVector(overrideCameraLookVector)
			self.rotateInput = ZERO_VECTOR2

			if VRService.VREnabled then
				newCameraFocus = self:GetVRFocus(subjectPosition, timeDelta)
			else
				newCameraFocus = CFrame.new(subjectPosition)
			end
			newCameraCFrame = CFrame.new(newCameraFocus.p - (zoom * newLookVector), newCameraFocus.p) + Vector3.new(0, self:GetCameraHeight(), 0)
		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

function ClassicCamera:EnterFirstPerson()
	self.inFirstPerson = true
	self:UpdateMouseBehavior()
end

function ClassicCamera:LeaveFirstPerson()
	self.inFirstPerson = false
	self:UpdateMouseBehavior()
end

return ClassicCamera