Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- delver
- -- pastebin run 4dsWfvHH
- os.loadAPI("/dorflib/api/dt")
- os.loadAPI("/dorflib/api/dtb")
- function delver(ystart, xdist_in, zdist_in, ytarget, doubleback)
- ydelta = ystart - ytarget
- if ydelta < 0 then
- ygoer = dt.dgup
- ybacker = dt.dgdown
- ydelta = ydelta * (-1)
- else
- ygoer = dt.dgdown
- ybacker = dt.dgup
- end
- if xdist_in < 0 then
- xdist = -1 * xdist_in
- xturner1 = turtle.turnLeft
- xturner2 = turtle.turnRight
- else
- xdist = xdist_in
- xturner1 = turtle.turnRight
- xturner2 = turtle.turnLeft
- end
- if zdist_in < 0 then
- zdist = -1 * zdist_in
- zturns = 2
- else
- zdist = zdist_in
- zturns = 0
- end
- if doubleback then
- doubleback = true
- else
- doubleback = false
- end
- done = false
- while not done do
- dt.fforward()
- dt.dgforward()
- for i = 1,ydelta,1 do
- ygoer()
- end
- for i = 1,zturns,1 do
- turtle.turnRight()
- end
- xtravelled = 0
- while ((dt.slots_full() < 13) and ((xtravelled <= xdist))) do
- while ((not dt.is_solid(turtle.inspect)) or (dt.is_turtle(turtle.inspect))) do
- xturner1()
- digf()
- xtravelled = xtravelled + 1
- xturner2()
- end
- for i = 1,zdist,1 do
- digf()
- end
- if doubleback then
- for i = 1,zdist,1 do
- turtle.back()
- end
- else
- xturner1()
- digf()
- xtravelled = xtravelled + 1
- xturner1()
- for i = 1,zdist,1 do
- digf()
- end
- xturner2()
- xturner2()
- end
- end
- xturner2()
- for i = 1,xtravelled,1 do
- digf()
- end
- xturner1()
- for i = 1,zturns,1 do
- turtle.turnRight()
- end
- xturner2()
- xturner2()
- dt.dgforward()
- dt.dgforward()
- dt.dgforward()
- dt.dgforward()
- xturner2()
- xturner2()
- for i = 1,ydelta,1 do
- ybacker()
- end
- dt.dgforward()
- dt.dgforward()
- turtle.turnLeft()
- dt.dump()
- turtle.turnRight()
- if not dt.has_fuel(800) then
- done = true
- end
- if (xtravelled >= xdist) then
- done = true
- end
- end
- end
- function digf()
- dt.dgforward()
- dt.dup()
- dt.ddown()
- end
- args = {...}
- if #args < 3 then
- print("Usage: delver [y start] [x] [z] [ytarget = 12] [doubleback = 0 (|1)]")
- else
- if #args < 4 then
- ytarget = 12
- else
- ytarget = tonumber(args[4])
- end
- if #args < 5 then
- doubleback = true
- else
- if tonumber(args[5]) > 0 then
- doubleback = true
- else
- doubleback = false
- end
- end
- ydelta = tonumber(args[1])
- xdist = tonumber(args[2])
- zdist = tonumber(args[3])
- delver(ydelta, xdist, zdist, ytarget, doubleback)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement