<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
<Item class="Workspace" referent="RBX00000001"><Properties><string name="Name">Workspace</string></Properties></Item>
<Item class="ServerScriptService" referent="RBX00000002"><Properties><string name="Name">ServerScriptService</string></Properties>
<Item class="Script" referent="RBX00000003"><Properties><string name="Name">Bootstrap</string><bool name="Disabled">false</bool><ProtectedString name="Source"><![CDATA[-- Lays a baseplate and a spawn so every build has ground to stand on.
local Workspace = game:GetService("Workspace")

if not Workspace:FindFirstChild("Baseplate") then
	local base = Instance.new("Part")
	base.Name = "Baseplate"
	base.Anchored = true
	base.Locked = true
	base.Size = Vector3.new(512, 4, 512)
	base.Position = Vector3.new(0, -2, 0)
	base.Material = Enum.Material.SmoothPlastic
	base.Color = Color3.fromRGB(91, 93, 105)
	base.TopSurface = Enum.SurfaceType.Smooth
	base.Parent = Workspace
end

if not Workspace:FindFirstChildWhichIsA("SpawnLocation", true) then
	local spawn = Instance.new("SpawnLocation")
	spawn.Name = "SpawnLocation"
	spawn.Anchored = true
	spawn.Neutral = true
	spawn.Size = Vector3.new(12, 1, 12)
	spawn.Position = Vector3.new(0, 0.5, 0)
	spawn.Material = Enum.Material.SmoothPlastic
	spawn.Parent = Workspace
end
]]></ProtectedString></Properties></Item>
<Item class="Script" referent="RBX00000004"><Properties><string name="Name">v0.1 First Steps Obby</string><bool name="Disabled">false</bool><ProtectedString name="Source"><![CDATA[-- v0.1: Initial Obby Platforms and Finish Line

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ServerScriptService = game:GetService("ServerScriptService")
local Workspace = game:GetService("Workspace")

-- Function to create a part
local function createPart(name, parent, position, size, material, color, transparency, anchored, canCollide)
    local part = Instance.new("Part")
    part.Name = name
    part.Size = size or Vector3.new(4, 1, 4)
    part.Position = position
    part.Material = material or Enum.Material.Neon
    part.BrickColor = BrickColor.new(color or "Bright blue")
    part.Transparency = transparency or 0
    part.Anchored = anchored or true
    part.CanCollide = canCollide or true
    part.Parent = parent
    return part
end

-- Create a folder for the obby parts
local obbyFolder = Workspace:FindFirstChild("ObbyParts")
if not obbyFolder then
    obbyFolder = Instance.new("Folder")
    obbyFolder.Name = "ObbyParts"
    obbyFolder.Parent = Workspace
end

-- Define start position for the obby (away from the default spawn)
local obbyStartX = 50
local obbyStartY = 5
local obbyStartZ = 0

-- Create starting platform
local startPlatform = createPart(
    "StartPlatform", obbyFolder,
    Vector3.new(obbyStartX, obbyStartY, obbyStartZ),
    Vector3.new(10, 1, 10),
    Enum.Material.SmoothPlastic, "Medium stone grey"
)

-- Create first jump platform
local platform1 = createPart(
    "Platform1", obbyFolder,
    Vector3.new(obbyStartX + 12, obbyStartY + 3, obbyStartZ),
    Vector3.new(6, 1, 6),
    Enum.Material.Neon, "Bright green"
)

-- Create second jump platform
local platform2 = createPart(
    "Platform2", obbyFolder,
    Vector3.new(obbyStartX + 22, obbyStartY + 6, obbyStartZ),
    Vector3.new(6, 1, 6),
    Enum.Material.Neon, "Bright yellow"
)

-- Create third jump platform
local platform3 = createPart(
    "Platform3", obbyFolder,
    Vector3.new(obbyStartX + 30, obbyStartY + 9, obbyStartZ + 5),
    Vector3.new(6, 1, 6),
    Enum.Material.Neon, "Bright orange"
)

-- Create fourth jump platform
local platform4 = createPart(
    "Platform4", obbyFolder,
    Vector3.new(obbyStartX + 35, obbyStartY + 12, obbyStartZ + 15),
    Vector3.new(6, 1, 6),
    Enum.Material.Neon, "Bright red"
)

-- Create finish line platform
local finishPlatform = createPart(
    "FinishPlatform", obbyFolder,
    Vector3.new(obbyStartX + 35, obbyStartY + 15, obbyStartZ + 25),
    Vector3.new(10, 1, 10),
    Enum.Material.ForceField, "Really blue",
    0.5
)
finishPlatform.CanCollide = true -- Finish platform should be solid

-- Add a "Finish" touch detection to the finish platform
local function onFinishTouched(otherPart)
    local player = game.Players:GetPlayerFromCharacter(otherPart.Parent)
    if player then
        -- This will be replaced with actual game logic (timer, leaderboard) in future builds
        print(player.Name .. " has reached the finish line of the first obby section!")
    end
end

finishPlatform.Touched:Connect(onFinishTouched)

print("v0.1: Initial Obby Platforms and Finish Line loaded.")]]></ProtectedString></Properties></Item>
<Item class="Script" referent="RBX00000005"><Properties><string name="Name">v0.2 Disappearing Tiles Challenge</string><bool name="Disabled">false</bool><ProtectedString name="Source"><![CDATA[local ServerScriptService = game:GetService("ServerScriptService")
local TweenService = game:GetService("TweenService")

-- Configuration for the new obby section
local OBBY_PARTS_FOLDER_NAME = "ObbyParts"
local DISAPPEARING_TILES_SECTION_NAME = "DisappearingTilesSection"
local SECTION_START_Z = 50 -- Start this section at Z = 50
local SECTION_BASE_Y = 5.5 -- Vertical position to place parts above the baseplate

-- Tile properties
local TILE_SIZE = Vector3.new(5, 1, 5)
local TILE_SPACING_Z = TILE_SIZE.Z + 2 -- Space between tiles
local NUM_TILES = 8
local DISAPPEAR_HINT_DELAY = 0.6 -- Time after touch before it starts fully disappearing (hint duration)
local DISAPPEAR_DURATION = 0.4 -- Time it takes to become fully transparent
local REAPPEAR_DURATION = 0.8 -- Time it takes to become fully solid again
local HIDDEN_DURATION = 2.0 -- How long it stays invisible and non-collidable

-- TweenInfo for smooth transitions
local tweenInfoDisappear = TweenInfo.new(
    DISAPPEAR_DURATION,
    Enum.EasingStyle.Linear,
    Enum.EasingDirection.Out
)

local tweenInfoReappear = TweenInfo.new(
    REAPPEAR_DURATION,
    Enum.EasingStyle.Linear,
    Enum.EasingDirection.Out
)

-- Find or create the main ObbyParts folder in ServerScriptService
local obbyPartsFolder = ServerScriptService:FindFirstChild(OBBY_PARTS_FOLDER_NAME)
if not obbyPartsFolder then
    obbyPartsFolder = Instance.new("Folder")
    obbyPartsFolder.Name = OBBY_PARTS_FOLDER_NAME
    obbyPartsFolder.Parent = ServerScriptService
end

-- Create a folder for this specific section
local sectionFolder = obbyPartsFolder:FindFirstChild(DISAPPEARING_TILES_SECTION_NAME)
if not sectionFolder then
    sectionFolder = Instance.new("Folder")
    sectionFolder.Name = DISAPPEARING_TILES_SECTION_NAME
    sectionFolder.Parent = obbyPartsFolder
end

-- Create a starting platform for this section
local startPlatform = Instance.new("Part")
startPlatform.Name = "DisappearingTiles_StartPlatform"
startPlatform.Size = Vector3.new(10, 1, 10)
startPlatform.Position = Vector3.new(0, SECTION_BASE_Y, SECTION_START_Z - 5)
startPlatform.Anchored = true
startPlatform.CanCollide = true
startPlatform.Color = Color3.fromRGB(0, 170, 255) -- Neon blue
startPlatform.Material = Enum.Material.Neon
startPlatform.Parent = sectionFolder

-- Function to set up a disappearing tile's behavior
local function setupDisappearingTile(tilePart)
    local isDisappearing = false
    local originalTransparency = tilePart.Transparency
    local originalCanCollide = tilePart.CanCollide
    local originalColor = tilePart.Color
    local originalMaterial = tilePart.Material
    local hintColor = Color3.fromRGB(255, 85, 0) -- Orange/Red hint color

    -- Ensures the tile is in its original state, useful for resets or initial setup
    local function resetTile()
        tilePart.Transparency = originalTransparency
        tilePart.CanCollide = originalCanCollide
        tilePart.Color = originalColor
        tilePart.Material = originalMaterial
        isDisappearing = false
    end

    tilePart.Touched:Connect(function(otherPart)
        -- Only trigger if not already disappearing and a player's humanoid touches it
        if isDisappearing then return end

        local character = otherPart.Parent
        local humanoid = character:FindFirstChildOfClass("Humanoid")
        if humanoid and humanoid.Health > 0 then
            isDisappearing = true
            
            -- Hint phase: briefly change color to warn the player
            tilePart.Color = hintColor
            task.wait(DISAPPEAR_HINT_DELAY)

            -- Disappear phase: smoothly fade out and become non-collidable
            local disappearTween = TweenService:Create(tilePart, tweenInfoDisappear, {
                Transparency = 1,
                CanCollide = false
            })
            disappearTween:Play()
            disappearTween.Completed:Wait()

            -- Hidden phase: remain invisible and non-collidable
            task.wait(HIDDEN_DURATION)

            -- Reappear phase: smoothly fade in and become collidable again, restoring original color
            local reappearTween = TweenService:Create(tilePart, tweenInfoReappear, {
                Transparency = originalTransparency,
                CanCollide = originalCanCollide,
                Color = originalColor
            })
            reappearTween:Play()
            reappearTween.Completed:Wait()

            isDisappearing = false
        end
    end)
    resetTile() -- Initialize the tile to its default state
end

-- Create and set up the disappearing tiles
for i = 1, NUM_TILES do
    local tile = Instance.new("Part")
    tile.Name = "DisappearingTile" .. i
    tile.Size = TILE_SIZE
    tile.Position = Vector3.new(0, SECTION_BASE_Y, SECTION_START_Z + (i * TILE_SPACING_Z))
    tile.Anchored = true
    tile.CanCollide = true
    tile.Color = Color3.fromRGB(0, 170, 255) -- Neon blue
    tile.Material = Enum.Material.Neon
    tile.Parent = sectionFolder
    
    setupDisappearingTile(tile)
end

-- Create an ending platform after the disappearing tiles
local endPlatform = Instance.new("Part")
endPlatform.Name = "DisappearingTiles_EndPlatform"
endPlatform.Size = Vector3.new(10, 1, 10)
endPlatform.Position = Vector3.new(0, SECTION_BASE_Y, SECTION_START_Z + (NUM_TILES * TILE_SPACING_Z) + TILE_SPACING_Z)
endPlatform.Anchored = true
endPlatform.CanCollide = true
endPlatform.Color = Color3.fromRGB(0, 170, 255) -- Neon blue
endPlatform.Material = Enum.Material.Neon
endPlatform.Parent = sectionFolder]]></ProtectedString></Properties></Item>
</Item>
</roblox>