Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Prompt for depth
- print("Enter staircase depth (number of steps):")
- local depth = tonumber(read())
- if not depth or depth <= 0 then
- print("Invalid depth.")
- return
- end
- local stepsTaken = 0
- -- === Utility Functions ===
- local function tryDig() while turtle.detect() do turtle.dig() sleep(0.1) end end
- local function tryDigDown() while turtle.detectDown() do turtle.digDown() sleep(0.1) end end
- local function tryDigUp() while turtle.detectUp() do turtle.digUp() sleep(0.1) end end
- local function tryForward()
- tryDig()
- while not turtle.forward() do
- tryDig()
- sleep(0.1)
- end
- end
- local function tryDown()
- tryDigDown()
- while not turtle.down() do
- tryDigDown()
- sleep(0.1)
- end
- end
- local function tryUp()
- tryDigUp()
- while not turtle.up() do
- tryDigUp()
- sleep(0.1)
- end
- end
- local function tryBack()
- if not turtle.back() then
- turtle.turnLeft()
- turtle.turnLeft()
- tryDig()
- turtle.turnLeft()
- turtle.turnLeft()
- turtle.back()
- end
- end
- -- === Fuel Estimation ===
- local function ensureFuel(needed)
- if turtle.getFuelLevel() < needed then
- print("Attempting refuel...")
- for i = 1, 16 do
- turtle.select(i)
- if turtle.refuel(0) then turtle.refuel() end
- end
- turtle.select(1)
- end
- if turtle.getFuelLevel() < needed then
- print("❌ Not enough fuel. Aborting.")
- return false
- end
- return true
- end
- -- === Dig 2-Wide Step ===
- local function dig2WideStep()
- -- Dig center forward, up, down
- tryDig()
- tryDigUp()
- tryDigDown()
- -- Dig right side
- turtle.turnRight()
- tryDig()
- tryDigUp()
- tryDigDown()
- turtle.turnLeft()
- -- Dig left retaining wall if necessary
- turtle.turnLeft()
- if turtle.detect() then turtle.dig() end
- turtle.turnRight()
- -- Dig right retaining wall if necessary
- turtle.turnRight()
- if turtle.detect() then turtle.dig() end
- turtle.turnLeft()
- end
- -- === Step Forward and Down ===
- local function stepForwardDown()
- tryForward()
- tryDown()
- stepsTaken = stepsTaken + 1
- end
- -- === MAIN EXECUTION ===
- local estimatedFuel = depth * 8 + 10
- print("Estimated fuel needed: " .. estimatedFuel)
- print("Current fuel: " .. turtle.getFuelLevel())
- if not ensureFuel(estimatedFuel) then return end
- -- Dig staircase
- for i = 1, depth do
- dig2WideStep()
- stepForwardDown()
- end
- print("✅ Staircase complete. Returning to start...")
- -- Return to starting position
- for i = 1, stepsTaken do
- tryUp()
- tryBack()
- end
- -- Face original direction
- turtle.turnLeft()
- turtle.turnLeft()
- print("✅ Returned to start.")
Advertisement
Add Comment
Please, Sign In to add comment