gghf icon

main

gghf | PRO | 07/16/22 12:31:09 PM UTC (Edited) | 0 ⭐ | 803 👁️ | Never ⏰ | []
Lua |

2.41 KB

|

None

|

0 👍

/

0 👎

---@diagnostic disable: param-type-mismatch
-- imports
local ul = require("unload")
local dR = require("doRefuel")
local tF = require("tryForwards")
local tD = require("tryDown")
local tu = require("turn")
local gT = require("goTo")
 
-- init global var
depth = 0
unloaded = 0
collected = 0
 
xPos, zPos = 0, 0
xDir, zDir = 0, 1
 
-- init local var
local size
local alternate = 0
local done = false
local reseal = false    -- slot 1 needs to be a placeable block if resealing is desired
 
-- -- -- -- --
-- execute --
-- -- -- -- --
 
-- Mine in a quarry pattern until we hit something we can't dig
print("Please enter the diameter of the bore. Positive natural numbers only:")
size = tonumber(io.read())
if size < 1 then
    print("Excavate diameter must be positive")
    return
end
 
if not dR.doRefuel() then
    print("Out of Fuel")
    return
end
 
print("Excavating...")
 
turtle.select(1)
if turtle.digDown() then
    reseal = true
end
 
while not done do
    for n = 1, size do
        for m = 1, size - 1 do
            if not tF.tryForwards() then
                done = true
                break
            end
        end
        if done then
            break
        end
        if n < size then
            if math.fmod(n + alternate, 2) == 0 then
                tu.turnLeft()
                if not tF.tryForwards() then
                    done = true
                    break
                end
                tu.turnLeft()
            else
                tu.turnRight()
                if not tF.tryForwards() then
                    done = true
                    break
                end
                tu.turnRight()
            end
        end
    end
    if done then
        break
    end
 
    if size > 1 then
        if math.fmod(size, 2) == 0 then
            tu.turnRight()
        else
            if alternate == 0 then
                tu.turnLeft()
            else
                tu.turnRight()
            end
            alternate = 1 - alternate
        end
    end
 
    if not tD.tryDown() then
        done = true
        break
    end
end
 
print("Returning to surface...")
 
-- Return to where we started
gT.goTo(0, 0, 0, 0, -1)
ul.unload(false)
gT.goTo(0, 0, 0, 0, 1)
 
-- Seal the hole
if reseal then
    turtle.placeDown()
end
 
print("Mined " .. (collected + unloaded) .. " items total.")
 
shell.setDir("/")
 

Comments