repeat wait() until game:IsLoaded() getgenv().LengthThreshold = 150 -- Use this to set maximum map length. getgenv().SurvivalPlaceId = 49707852 getgenv().LobbyPlaceId = 45146873 getgenv().VetoDelay = 0.5 local TeleportService = game:GetService("TeleportService") local function getMapLength(mapName) local mapsInfo = workspace:FindFirstChild("MapsInformation") if not mapsInfo then return math.huge end local mapData = mapsInfo:FindFirstChild(mapName) if not mapData then return math.huge end local lengthValue = mapData:FindFirstChild("Length") if not lengthValue then return math.huge end return lengthValue.Value end local function findShortestMap() local mapSlots = {"Map1", "Map2", "Map3"} local bestSlot = nil local bestLength = math.huge for _, slot in ipairs(mapSlots) do local mapObj = workspace:FindFirstChild(slot) if not mapObj then continue end local typeValue = mapObj:FindFirstChild("Type") if not typeValue then continue end local mapName = typeValue.Value if not mapName or mapName == "" then continue end local length = getMapLength(mapName) if length < bestLength then bestLength = length bestSlot = slot end end return bestSlot, bestLength end if game.PlaceId == getgenv().LobbyPlaceId then -- Collect rewards and teleport to survival wait(1) workspace:WaitForChild("SurvivalAnalysis"):InvokeServer() wait(1) TeleportService:Teleport(getgenv().SurvivalPlaceId) elseif game.PlaceId == getgenv().SurvivalPlaceId then -- Find shortest map and start game local Vote = workspace:WaitForChild("Vote") wait(2) local attempts = 0 while attempts < 50 do attempts = attempts + 1 local bestSlot, bestLength = findShortestMap() if bestSlot and bestLength <= getgenv().LengthThreshold then Vote:InvokeServer(bestSlot) break else Vote:InvokeServer("Veto") wait(getgenv().VetoDelay) end end -- Skip the 60 second wait workspace:WaitForChild("SkipWaitVote"):InvokeServer() else -- Unknown place, teleport to survival TeleportService:Teleport(getgenv().SurvivalPlaceId) end