View difference between Paste ID: xHXGZuhr and ZFDtScdJ
SHOW: | | - or go back to the newest paste.
1
--local tArgs = { ... }
2
--if #tArgs ~= 1 then
3
--	print( "Usage: tunnel <length>" )
4
--	return
5
--end
6
7
8
-- Mine in a quarry pattern until we hit something we can't dig
9
--local length = tonumber( tArgs[1] )
10
local length = tonumber(6)
11
if length < 1 then
12
	print( "Tunnel length must be positive" )
13
	return
14
end
15
	
16
local depth = length
17
local collected = 0
18
19
local function collect()
20
	collected = collected + 1
21
	if math.fmod(collected, 25) == 0 then
22
		print( "Mined "..collected.." items." )
23
	end
24
end
25
26
local function tryDig()
27
	while turtle.detect() do
28
		if turtle.dig() then
29
			collect()
30
			sleep(0.5)
31
		else
32
			return false
33
		end
34
	end
35
	return true
36
end
37
38
local function tryDigUp()
39
	while turtle.detectUp() do
40
		if turtle.digUp() then
41
			collect()
42
			sleep(0.5)
43
		else
44
			return false
45
		end
46
	end
47
	return true
48
end
49
50
local function tryDigDown()
51
	while turtle.detectDown() do
52
		if turtle.digDown() then
53
			collect()
54
			sleep(0.5)
55
		else
56
			return false
57
		end
58
	end
59
	return true
60
end
61
local function refuel()
62
	local fuelLevel = turtle.getFuelLevel()
63
	if fuelLevel == "unlimited" or fuelLevel > 0 then
64
		return
65
	end
66
	
67
	local function tryRefuel()
68
		for n=1,16 do
69
			if turtle.getItemCount(n) > 0 then
70
				turtle.select(n)
71
				if turtle.refuel(1) then
72
					turtle.select(1)
73
					return true
74
				end
75
			end
76
		end
77
		turtle.select(1)
78
		return false
79
	end
80
	
81
	if not tryRefuel() then
82
		print( "Add more fuel to continue." )
83
		while not tryRefuel() do
84
			sleep(1)
85
		end
86
		print( "Resuming Tunnel." )
87
	end
88
end
89
90
local function tryUp()
91
	refuel()
92
	while not turtle.up() do
93
		if turtle.detectUp() then
94
			if not tryDigUp() then
95
				return false
96
			end
97
		elseif turtle.attackUp() then
98
			collect()
99
		else
100
			sleep( 0.5 )
101
		end
102
	end
103
	return true
104
end
105
106
local function tryDown()
107
	refuel()
108
	while not turtle.down() do
109
		if turtle.detectDown() then
110
			if not tryDigDown() then
111
				return false
112
			end
113
		elseif turtle.attackDown() then
114
			collect()
115
		else
116
			sleep( 0.5 )
117
		end
118
	end
119
	return true
120
end
121
122
local function tryForward()
123
	refuel()
124
	while not turtle.forward() do
125
		if turtle.detect() then
126
			if not tryDig() then
127
				return false
128
			end
129
		elseif turtle.attack() then
130
			collect()
131
		else
132
			sleep( 0.5 )
133
		end
134
	end
135
	return true
136
end
137
138
print( "Tunnelling..." )
139
140
for n=1,length do
141
	turtle.placeDown()
142
	tryDigUp()
143
	turtle.turnLeft()
144
	tryDig()
145
	tryUp()
146
 tryDig()
147
 tryUp()
148
 tryDig()
149
 tryUp()
150
 tryDig()
151
 tryUp()
152
	tryDig()
153
	turtle.turnRight()
154
	turtle.turnRight()
155
	tryDig()
156
 tryForward()
157
 tryDig()
158
 tryDigDown()
159
	tryDown()
160
	tryDig()
161
 tryDigDown()
162
 tryDown()
163
 tryDig()
164
 tryDigDown()
165
 tryDown()
166
 tryDig()
167
 tryDigDown()
168
 tryDown()
169
 tryDig()
170
 turtle.turnRight()
171
 turtle.turnRight()
172
 tryForward()
173
 turtle.turnRight()
174
	
175
	if n<length then
176
		tryDig()
177
		if not tryForward() then
178
			print( "Aborting Tunnel." )
179
			break
180
		end
181
	else
182
		print( "Tunnel complete." )
183
	end
184
185
end
186
187
188
print( "Returning to start..." )
189
190
-- Return to where we started
191
turtle.turnLeft()
192
turtle.turnLeft()
193
tryUp()
194
torch = 0
195
while depth > 1 do
196
	if turtle.forward() then
197
		depth = depth - 1
198
  torch = torch +1
199
  if torch == 5 then
200
   turtle.select(15)
201
   turtle.placeDown()
202
   torch = 0
203
  end
204
	else
205
		turtle.dig()
206
	end
207
end
208
turtle.turnRight()
209
j = 0
210
while j < 4 do
211
 tryDig()
212
 tryForward()
213
 tryDigUp()
214
 j = j +1
215
end
216
turtle.turnRight()
217
tryDown()
218
print("Tunnel complete.")
219
rednet.send(92,"M01 - Tunnel complete.")
220
rednet.send(92,"M01 - Mined "..collected.." items total." )
221
shell.run("test")