local TextChatService = game:GetService("TextChatService") local TweenService = game:GetService("TweenService") local Lighting = game:GetService("Lighting") -- SETTINGS local ROOM_WIDTH = 30 local ROOM_DEPTH = 50 local WALL_HEIGHT = 15 local STAIR_HEIGHT = 15 -- Vertical distance between floors -- 1. BIOME SETTINGS local function getBiomeData(floor) local data = {Color = Color3.fromRGB(255, 255, 100), Material = Enum.Material.Plastic, Damage = 0, IsNull = false} if floor > 100 then -- Sky data.Color = Color3.fromRGB(180, 220, 255) elseif floor < 0 then -- Basement data.Color = Color3.fromRGB(40, 40, 40) end -- Absolute Zero / Infinite Logic if floor <= -5427 then data.Material = Enum.Material.Ice data.Color = Color3.fromRGB(180, 240, 255) if math.random(1, 10) == 1 then data.Color = Color3.fromRGB(255, 80, 0) data.Material = Enum.Material.Neon data.Damage = 5 end end return data end -- 2. THE GENERATOR local function createRoom(floorNum, cframe) local data = getBiomeData(floorNum) local room = Instance.new("Model", workspace) room.Name = "Room_Floor_" .. floorNum local function quickPart(name, size, relativePos) local p = Instance.new("Part", room) p.Name = name p.Size = size p.Color = data.Color p.Material = data.Material p.Anchored = true p.CFrame = cframe * CFrame.new(relativePos) return p end -- Build Shell local floorPart = quickPart("Floor", Vector3.new(ROOM_WIDTH, 1, ROOM_DEPTH), Vector3.new(0, 0, 0)) quickPart("Ceiling", Vector3.new(ROOM_WIDTH, 1, ROOM_DEPTH), Vector3.new(0, WALL_HEIGHT, 0)) quickPart("WallL", Vector3.new(1, WALL_HEIGHT, ROOM_DEPTH), Vector3.new(ROOM_WIDTH/2, WALL_HEIGHT/2, 0)) quickPart("WallR", Vector3.new(1, WALL_HEIGHT, ROOM_DEPTH), Vector3.new(-ROOM_WIDTH/2, WALL_HEIGHT/2, 0)) quickPart("WallBack", Vector3.new(ROOM_WIDTH, WALL_HEIGHT, 1), Vector3.new(0, WALL_HEIGHT/2, -ROOM_DEPTH/2)) -- Front Wall with Hole for Stairs quickPart("WallFrontL", Vector3.new(10, WALL_HEIGHT, 1), Vector3.new(10, WALL_HEIGHT/2, ROOM_DEPTH/2)) quickPart("WallFrontR", Vector3.new(10, WALL_HEIGHT, 1), Vector3.new(-10, WALL_HEIGHT/2, ROOM_DEPTH/2)) -- Hazards if data.Damage > 0 then floorPart.Touched:Connect(function(hit) local hum = hit.Parent:FindFirstChild("Humanoid") if hum then hum:TakeDamage(data.Damage) end end) end -- Stairs & Trigger local isDown = floorNum < 0 local dir = isDown and -1 or 1 local stairX = isDown and -10 or 10 for i = 1, 10 do quickPart("Step", Vector3.new(8, 1, 4), Vector3.new(stairX, i * dir, (ROOM_DEPTH/2) + (i * 2))) end -- THE TRIGGER (The Event that spawns the next room) local trigger = quickPart("Trigger", Vector3.new(15, 15, 5), Vector3.new(stairX, 15 * dir, ROOM_DEPTH + 5)) trigger.Transparency = 1 trigger.CanCollide = false trigger.Touched:Connect(function(hit) local char = hit.Parent if char:FindFirstChild("Humanoid") and trigger.Parent then trigger:Destroy() -- Prevent multiple spawns local nextFloor = isDown and floorNum - 1 or floorNum + 1 local nextCFrame = cframe * CFrame.new(0, STAIR_HEIGHT * dir, ROOM_DEPTH + 10) createRoom(nextFloor, nextCFrame) end end) return room, floorPart end -- START THE GAME local startRoom, startFloor = createRoom(0, CFrame.new(0, 5, 0)) -- Trapdoor for Basement local trapdoor = Instance.new("Part", startRoom) trapdoor.Size = Vector3.new(10, 1.2, 10) trapdoor.Position = Vector3.new(-10, 5, 15) trapdoor.Color = Color3.fromRGB(60, 35, 15) trapdoor.Anchored = true TextChatService.MessageReceived:Connect(function(msg) if string.upper(msg.Text) == "HE IS FINDING YOU" then TweenService:Create(trapdoor, TweenInfo.new(2), {Transparency = 1, CanCollide = false}):Play() -- Spawn Basement createRoom(-1, CFrame.new(0, 5 - STAIR_HEIGHT, ROOM_DEPTH + 10)) end end)
local TextChatService = game:GetService("TextChatService") local TweenService = game:GetService("TweenService") local Lighting = game:GetService("Lighting") local ROOM_DEPTH = 50 -- 1. THE ALL-IN-ONE BIOME CALCULATOR local function getBiomeData(floor) local data = {Name = "Main", Color = Color3.fromRGB(255, 255, 100), Material = Enum.Material.Plastic, Damage = 0, IsNull = false} -- UPWARD PATH if floor >= 0 and floor <= 100 then data.Name = "Main" if math.random(1, 5) == 1 then data.Damage = 1 end -- Nightmare 1/5 elseif floor > 100 and floor <= 1000 then data.Name = "Sky" data.Color = Color3.fromRGB(180, 220, 255) data.Material = Enum.Material.Glass elseif floor > 1000 and floor <= 2564 then data.Name = "Heaven" data.Color = Color3.fromRGB(255, 255, 255) data.Material = Enum.Material.Neon elseif floor > 2564 and floor <= 5000 then data.Name = "The Up" data.Color = Color3.fromRGB(30, 30, 30) data.IsNull = true elseif floor > 5000 and floor <= 10000 then data.Name = "Hallway." data.Color = Color3.fromRGB(0, 0, 0) data.IsNull = true data.Damage = 1 -- Constant nightmare torture elseif floor > 10000 and floor <= 11000 then data.Name = "Roof" data.Color = Color3.fromRGB(150, 150, 150) data.IsNull = true elseif floor > 11000 and floor <= 15678 then data.Name = "End." data.Color = Color3.fromRGB(255, 255, 255) data.Material = Enum.Material.Marble -- DOWNWARD PATH elseif floor < 0 and floor >= -100 then data.Name = "Basement" data.Color = Color3.fromRGB(40, 40, 40) elseif floor < -100 and floor >= -1575 then data.Name = "Cellar" data.Color = Color3.fromRGB(25, 20, 15) if math.random(1, 2) == 1 then data.Damage = 1 end elseif floor < -1575 and floor >= -3456 then data.Name = "Bottom" data.Color = Color3.fromRGB(15, 15, 15) data.Damage = 1 elseif floor < -3456 and floor >= -5427 then data.Name = "Hellway" data.Color = Color3.fromRGB(50, 0, 0) data.IsNull = true elseif floor <= -5427 and floor >= -10000 then data.Name = "Absolute Zero" data.Color = Color3.fromRGB(180, 240, 255) data.Material = Enum.Material.Ice -- 1/10 Chance for Absolute Infinite if math.random(1, 10) == 1 then data.Name = "Absolute Infinite" data.Color = Color3.fromRGB(255, 80, 0) data.Material = Enum.Material.Neon data.Damage = 5 end end return data end -- 2. MASTER GENERATOR local function createRoom(floorNum, spawnPos) local data = getBiomeData(floorNum) local room = Instance.new("Model", workspace) room.Name = "Floor_" .. floorNum -- Floor Part local floorPart = Instance.new("Part", room) floorPart.Name = "Floor" floorPart.Size = Vector3.new(30, 1, ROOM_DEPTH) floorPart.CFrame = CFrame.new(spawnPos) floorPart.Color = data.Color floorPart.Material = data.Material floorPart.Anchored = true -- Walls local w1 = Instance.new("Part", room) w1.Size = Vector3.new(1, 15, ROOM_DEPTH) w1.Position = floorPart.Position + Vector3.new(15, 7.5, 0) w1.Color = data.Color w1.Anchored = true local w2 = w1:Clone() w2.Parent = room w2.Position = floorPart.Position + Vector3.new(-15, 7.5, 0) -- Environmental Effects (Local focus via Remote could be better, but this works for now) if data.IsNull then Lighting.FogEnd = 15 Lighting.FogColor = Color3.new(0,0,0) else Lighting.FogEnd = 100000 end -- Damage Logic if data.Damage > 0 then floorPart.Touched:Connect(function(hit) local hum = hit.Parent:FindFirstChild("Humanoid") if hum then hum:TakeDamage(data.Damage) end end) end -- Stair/Trigger Logic local isDown = floorNum < 0 local dir = isDown and -1 or 1 for i = 1, 10 do local step = Instance.new("Part", room) step.Size = Vector3.new(10, 1, 3) step.Position = floorPart.Position + Vector3.new(isDown and -8 or 8, i * dir, 15 + (i * 1.5)) step.Color = data.Color step.Anchored = true end local trigger = Instance.new("Part", room) trigger.Size = Vector3.new(15, 10, 2) trigger.Position = floorPart.Position + Vector3.new(isDown and -8 or 8, 12 * dir, 35) trigger.Transparency = 1 trigger.CanCollide = false trigger.Touched:Connect(function(hit) if hit.Parent:FindFirstChild("Humanoid") then trigger:Destroy() createRoom(isDown and floorNum - 1 or floorNum + 1, spawnPos + Vector3.new(0, 15 * dir, ROOM_DEPTH)) end end) -- Deletion (to prevent lag over 15k floors) task.delay(60, function() room:Destroy() end) end -- INITIAL HUB local startRoom = createRoom(0, Vector3.new(0, 0, 0)) -- Trapdoor setup same as before...