Second_Cup

Untitled

Jul 8th, 2025 (edited)
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.77 KB | None | 0 0
  1. -- Prompt for depth
  2. print("Enter staircase depth (number of steps):")
  3. local depth = tonumber(read())
  4.  
  5. if not depth or depth <= 0 then
  6. print("Invalid depth.")
  7. return
  8. end
  9.  
  10. local stepsTaken = 0
  11.  
  12. -- === Utility Functions ===
  13. local function tryDig() while turtle.detect() do turtle.dig() sleep(0.1) end end
  14. local function tryDigDown() while turtle.detectDown() do turtle.digDown() sleep(0.1) end end
  15. local function tryDigUp() while turtle.detectUp() do turtle.digUp() sleep(0.1) end end
  16.  
  17. local function tryForward()
  18. tryDig()
  19. while not turtle.forward() do
  20. tryDig()
  21. sleep(0.1)
  22. end
  23. end
  24.  
  25. local function tryDown()
  26. tryDigDown()
  27. while not turtle.down() do
  28. tryDigDown()
  29. sleep(0.1)
  30. end
  31. end
  32.  
  33. local function tryUp()
  34. tryDigUp()
  35. while not turtle.up() do
  36. tryDigUp()
  37. sleep(0.1)
  38. end
  39. end
  40.  
  41. local function tryBack()
  42. if not turtle.back() then
  43. turtle.turnLeft()
  44. turtle.turnLeft()
  45. tryDig()
  46. turtle.turnLeft()
  47. turtle.turnLeft()
  48. turtle.back()
  49. end
  50. end
  51.  
  52. -- === Fuel Estimation ===
  53. local function ensureFuel(needed)
  54. if turtle.getFuelLevel() < needed then
  55. print("Attempting refuel...")
  56. for i = 1, 16 do
  57. turtle.select(i)
  58. if turtle.refuel(0) then turtle.refuel() end
  59. end
  60. turtle.select(1)
  61. end
  62. if turtle.getFuelLevel() < needed then
  63. print("❌ Not enough fuel. Aborting.")
  64. return false
  65. end
  66. return true
  67. end
  68.  
  69. -- === Dig 2-Wide Step ===
  70. local function dig2WideStep()
  71. -- Dig center forward, up, down
  72. tryDig()
  73. tryDigUp()
  74. tryDigDown()
  75.  
  76. -- Dig right side
  77. turtle.turnRight()
  78. tryDig()
  79. tryDigUp()
  80. tryDigDown()
  81. turtle.turnLeft()
  82.  
  83. -- Dig left retaining wall if necessary
  84. turtle.turnLeft()
  85. if turtle.detect() then turtle.dig() end
  86. turtle.turnRight()
  87.  
  88. -- Dig right retaining wall if necessary
  89. turtle.turnRight()
  90. if turtle.detect() then turtle.dig() end
  91. turtle.turnLeft()
  92. end
  93.  
  94. -- === Step Forward and Down ===
  95. local function stepForwardDown()
  96. tryForward()
  97. tryDown()
  98. stepsTaken = stepsTaken + 1
  99. end
  100.  
  101. -- === MAIN EXECUTION ===
  102.  
  103. local estimatedFuel = depth * 8 + 10
  104. print("Estimated fuel needed: " .. estimatedFuel)
  105. print("Current fuel: " .. turtle.getFuelLevel())
  106.  
  107. if not ensureFuel(estimatedFuel) then return end
  108.  
  109. -- Dig staircase
  110. for i = 1, depth do
  111. dig2WideStep()
  112. stepForwardDown()
  113. end
  114.  
  115. print("✅ Staircase complete. Returning to start...")
  116.  
  117. -- Return to starting position
  118. for i = 1, stepsTaken do
  119. tryUp()
  120. tryBack()
  121. end
  122.  
  123. -- Face original direction
  124. turtle.turnLeft()
  125. turtle.turnLeft()
  126.  
  127. print("✅ Returned to start.")
  128.  
Advertisement
Add Comment
Please, Sign In to add comment