local Config = { ["FastWin"] = false, -- Win Faster but slower stairs? --["AutoLoop"] = false, -- DOES NOT WORK } local RunService = game:GetService("RunService") local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer local Functional = workspace.FunctionalFolder local function getRandAngles() local x = math.rad(math.random(-180, 180)) local y = math.rad(math.random(-180, 180)) local z = math.rad(math.random(-180, 180)) return CFrame.Angles(x, y, z) end local function getCharacter() return LocalPlayer.Character or (LocalPlayer.CharacterAdded:wait() and LocalPlayer.Character) end local function getTeam() return getCharacter().Parent.Name:gsub(" Team", '') end local function getBase() local baseName = getTeam() .. "Base" return Functional:FindFirstChild(baseName) end local function getBlockGiver() local Base = getBase() local BlockGivers = Functional:WaitForChild("BlockGivers"):GetChildren() local StartStairPos = Base.StartStair.Position local Closest = math.huge local Best = nil for i, BlockGiver in pairs(BlockGivers) do local DistanceFromStair = (BlockGiver.Position - StartStairPos).Magnitude if DistanceFromStair < Closest then Closest = DistanceFromStair Best = BlockGiver end end return Best end while task.wait() do if Config.AutoLoop == true then print("Started with Auto Loop") end repeat task.wait() until getBase() print("AUTO WIN | MATCH STARTED", getTeam()) local PlacePreview = Functional.PlacePreview local Character = getCharacter() local RootPart = Character.HumanoidRootPart local Humanoid = Character.Humanoid Humanoid.EvaluateStateMachine = false while task.wait() and getBase() and RootPart do print("Looping..") local BlockGiver = getBlockGiver() if BlockGiver then -- Teleport to the block giver (upside down) repeat RootPart.CFrame = CFrame.new(BlockGiver.Position) * getRandAngles() task.wait() RootPart.CFrame = CFrame.new(BlockGiver.Position + Vector3.new(0, 500, 0)) * getRandAngles() task.wait() until Character:FindFirstChild("BlocksTool") local BestBlock = PlacePreview:FindFirstChildOfClass("Part") repeat if not BestBlock then BestBlock = PlacePreview:FindFirstChildOfClass("Part") continue end RootPart.CFrame = CFrame.new(BestBlock.Position) * getRandAngles() task.wait() until Character:FindFirstChild("BlocksTool") end if Config.FastWin == true then local WinTouchPart = Functional:FindFirstChild("WinTouchPart", true) task.wait() if RootPart and getBase() then getCharacter():WaitForChild("HumanoidRootPart").CFrame = WinTouchPart.CFrame * getRandAngles() task.wait() end end end print("AUTO WIN | MATCH COMPLETE") if Config.AutoLoop == false then break end end