local ReplicatedStorage = game:GetService("ReplicatedStorage") local EquipRemote = ReplicatedStorage:WaitForChild("RemoteEvent"):WaitForChild("Equip") local TargetBiomes = { "Mainframe", "Warp Train", "Hotland" } --// Fluent UI local Fluent = loadstring(game:HttpGet("https://github.com/dawid-scripts/Fluent/releases/latest/download/main.lua"))() local Window = Fluent:CreateWindow({ Title = "Biome Auto-Cycle", SubTitle = "by sabb", TabWidth = 160, Size = UDim2.fromOffset(480, 320), Acrylic = true, Theme = "Dark", MinimizeKey = Enum.KeyCode.LeftControl }) local Tabs = { Main = Window:AddTab({ Title = "Auto Cycle", Icon = "repeat" }) } --// State local AutoCycleEnabled = false local LoopRunning = false local StatusParagraph local function isTargetBiomeActive() local currentBiomeFolder = workspace:FindFirstChild("CurrentBiome") if not currentBiomeFolder then return false end for _, biomeName in ipairs(TargetBiomes) do if currentBiomeFolder:FindFirstChild(biomeName) then return true, biomeName end end return false end local function fireBrokenFragmentBanner() local ItemNames = { "Broken Fragment of Time" } for _, name in ipairs(ItemNames) do local args = { { Description = "If I let you go here, you will never come home again.", Type = "Weapon", Rarity = "Banner", Whitelist = {}, Unlockable = true, Locked = 0, Collect = { { Value = 1, Req = "Wounded Mask" }, { Value = 200000000, Req = "EXP" }, { Value = 2500000, Req = "Sans Kill" }, { Value = 1000000, Req = "Shiny Sans Kill" } }, Name = name }, [3] = 54 } EquipRemote:FireServer(unpack(args)) end end local function fireBrokenFragmentConsumable() local args = { { ItemType = "Consumable", Type = "Items", Name = "Broken Fragment of Time", Rarity = "Legendary", Unlockable = true, Purchasable = { true, 8, {2, 2}, {20, 20} }, ShowInventory = true, Description = "Obtained with a chance of 1/30 every 15 minutes. Skip the current biome and double the duration of the next biome. (Cannot skip biome that provides more than 3x luck.)" }, [3] = 7 } EquipRemote:FireServer(unpack(args)) end local function setStatus(text) if StatusParagraph then StatusParagraph:SetDesc(text) end end --// Main loop: never stops. While target biome isn't active it fires the --// skip sequence quickly; once it's active it just idles, re-checking --// every 5s in case the biome changes again. local function runLoop() if LoopRunning then return end LoopRunning = true while AutoCycleEnabled do local found, biomeName = isTargetBiomeActive() if found then setStatus("Target biome active: " .. biomeName .. " — idling (recheck every 5s)") task.wait(5) else setStatus("Target biome not found — firing skip sequence...") fireBrokenFragmentBanner() task.wait(0.5) fireBrokenFragmentConsumable() task.wait(1.5) end end LoopRunning = false setStatus("Stopped") end --// UI Tabs.Main:AddParagraph({ Title = "Target Biomes", Content = table.concat(TargetBiomes, ", ") }) StatusParagraph = Tabs.Main:AddParagraph({ Title = "Status", Content = "Idle" }) Tabs.Main:AddToggle("AutoCycleToggle", { Title = "Auto Cycle", Description = "Fires skip sequence until target biome, then loops forever checking every 5s", Default = false, Callback = function(value) AutoCycleEnabled = value if value then setStatus("Starting...") task.spawn(runLoop) else setStatus("Stopping...") end end }) Fluent:Notify({ Title = "Biome Auto-Cycle", Content = "Script loaded.", Duration = 4 })