--Stairs Down Simple Script v1 --Turtle Program Computer Craft --by SemlerPDX(July2016) --COMMENT SYNTAX EXPLAINATION --torches must be in slot 1 (one for every 3rd layer dug) --stairs can be in slot 2 if desired, see below --StairsDown 20 (number of stairs down) 1 (or blank -- 1 will add stairs from slot 2) --example: StairsDown 20 (makes stairs 20 deep with torches but no stair blocks) --example2: StairsDown 20 1 (makes stairs 20 deep w/ torches and stair blocks) -- Variables -- local args = {...} local d = args[1] or 0 local s = args[2] or 0 local r = 0 + d local t = turtle local lit = 2 -- F-ACK -- if #args ~= 2 then print("") print("") return end if d == 0 then print("") print("") return end -- Functions -- --force forward function by CCCode local function forceForward() while not t.forward() do t.dig() end end --dig down, decrement lit variable local function fDown() t.digDown() t.down() lit = lit - 1 end --shave 4 blocks and place torch if needed local function fShave() for v=1,4 do if v == 3 then if lit == 0 then t.placeUp() lit = lit + 2 forceForward() else forceForward() end else forceForward() end end end --move to next shaving position local function fReturn() for v=1,3 do t.back() end end --place stairs while returning home local function fHomeS() t.turnLeft() t.turnLeft() t.select(2) while r ~=0 do t.place() t.up() t.forward() r = r -1 end end --return home local function fHome() while r ~=0 do t.up() t.back() r = r -1 end end --clear display screen local function fset() term.clear() term.setCursorPos(1,1) end -- Pre-fire scripts -- fset() print("Building staircase "..tostring(d).." blocks down...") t.digDown() t.down() sleep(2) ---- Main Loop ---- while d ~= 0 do local function fcancel() local event, key = os.pullEvent("key") end local function fmain() fShave() fReturn() fDown() d = d - 1 end FunctionEnabled = parallel.waitForAny(fcancel,fmain) if FunctionEnabled == 1 then textutils.slowPrint("Cancelling Build...", 15) sleep(1.65) break end end -- Evaluate Ending -- if FunctionEnabled == 1 then --(1 = functions cancelled, 2 = standard function looped) fset() print("Build Cancelled by user") print("...returning to start in 5 seconds - move out of path") sleep(6) fHome() t.select(1) else fset() print("Build Completed") if s == 1 then print("Building stairs and returning home...") fHomeS() t.select(1) fset() print("...program complete") else fset() fHome() t.select(1) print("...program complete") end end