145 lines
4.5 KiB
Lua
145 lines
4.5 KiB
Lua
if event.type == "program" then
|
|
mem.events = {}
|
|
mem.treecount = 0
|
|
mem.inventory = {sapling = 0, fertiliser = 0}
|
|
digiline_send("treedetector",{distance=0, command="get"})
|
|
digiline_send("extender1", {a = false, b = false, c = false, d = false})
|
|
digiline_send("extender2", {a = false, b = false, c = false, d = false})
|
|
mem.state = "idle"
|
|
mem.isSaplingOrdered = false
|
|
mem.isFertiliserOrederd = false
|
|
end
|
|
|
|
if event.type == "digiline" then
|
|
if event.channel == "treesort" then
|
|
local count = mem.inventory[event.msg.name]
|
|
if count == nil then count = 0 end
|
|
mem.inventory[event.msg.name]= count + event.msg.count
|
|
end
|
|
|
|
if event.channel == "treedetector" then
|
|
mem.currentItem = event.msg
|
|
interrupt(1)
|
|
end
|
|
|
|
if event.channel == "chainsawindetector" then
|
|
digiline_send("extender1", {a = false, b = false, c = false, d = false})
|
|
mem.state = "prepare"
|
|
interrupt(30)
|
|
end
|
|
|
|
if event.channel == "drawercontroller" and event.msg.status then
|
|
if event.msg.name == "treefarmingsapplingorder" then
|
|
mem.isSaplingOrdered = false
|
|
if mem.isFertiliserOrederd == false then mem.state = "prepare" interrupt(30) end
|
|
end
|
|
|
|
if event.msg.name == "treefarmingfertilisedorder" then
|
|
mem.isFertiliserOrederd = false
|
|
if mem.isSaplingOrdered == false then mem.state = "prepare" interrupt(30) end
|
|
end
|
|
end
|
|
end
|
|
|
|
if event.type == "interrupt" then
|
|
if mem.state == "idle" then interrupt(10) end
|
|
|
|
if mem.state == "wait" then
|
|
local item = mem.currentItem
|
|
if item:find("sapling", 1, true) then
|
|
digiline_send("extender2", {a = false, b = false, c = false, d = false})
|
|
mem.state = "fertilising"
|
|
interrupt(1)
|
|
elseif item:find("trunk", 1, true) or item:find("tree", 1, true) then
|
|
digiline_send("extender2", {a = false, b = false, c = false, d = false})
|
|
digiline_send("extender1", {a = false, b = false, c = false, d = false})
|
|
mem.state = "cut"
|
|
interrupt(1)
|
|
elseif item == "air" then
|
|
digiline_send("extender1", {a = false, b = false, c = false, d = true})
|
|
mem.state = "recharge"
|
|
return
|
|
else
|
|
digiline_send("treedetector",{distance=0, command="get"})
|
|
interrupt(5)
|
|
end
|
|
end
|
|
|
|
if mem.state == "prepare" then
|
|
local item = mem.currentItem
|
|
if item ~= "air" then mem.state = "wait" interrupt(1) return end
|
|
if mem.inventory["sapling"] == 0 or mem.inventory["fertiliser"] == 0 then
|
|
--order from drawer default:sapling and pandorabox_custom:super_fertiliser
|
|
if mem.inventory["sapling"] == 0 then
|
|
local order = {
|
|
name="treefarmingsapplingorder",
|
|
destination="Tacit:treefarming",
|
|
item="default:sapling",
|
|
stacksize=1, count=1
|
|
}
|
|
digiline_send("drawercontroller", order)
|
|
mem.isSaplingOrdered = true
|
|
mem.state = "pause"
|
|
digiline_send("treemon", "no sapling\nordering...")
|
|
end
|
|
if mem.inventory["fertiliser"] == 0 then
|
|
local order = {
|
|
name="treefarmingfertilisedorder",
|
|
destination="Tacit:treefarming",
|
|
item="pandorabox_custom:super_fertiliser",
|
|
stacksize=99, count=1
|
|
}
|
|
mem.isFertiliserOrederd = true
|
|
digiline_send("drawercontroller", order)
|
|
digiline_send("treemon", "no\nfertiliser\nordering...")
|
|
mem.state = "pause"
|
|
end
|
|
else
|
|
mem.state = "planting"
|
|
digiline_send("extender2", {c=false})
|
|
interrupt(20)
|
|
end
|
|
end
|
|
|
|
if mem.state == "planting" then
|
|
digiline_send("extender2", {c=true})
|
|
mem.inventory["sapling"] = mem.inventory["sapling"] - 1
|
|
mem.state = "wait"
|
|
mem.currentItem = ""
|
|
interrupt(1)
|
|
end
|
|
|
|
if mem.state == "fertilising" then
|
|
digiline_send("extender2", {b=true})
|
|
mem.inventory["fertiliser"] = mem.inventory["fertiliser"] - 1
|
|
mem.state = "wait"
|
|
mem.currentItem = ""
|
|
interrupt(1)
|
|
end
|
|
|
|
if mem.state == "cut" then
|
|
digiline_send("extender1", {c = true})
|
|
mem.state = "wait"
|
|
mem.currentItem = ""
|
|
mem.treecount = mem.treecount + 1
|
|
local str = "Trees done:\n" ..
|
|
tostring(mem.treecount) .. "\n" ..
|
|
"saplings:\n" ..
|
|
tostring(mem.inventory["sapling"]) .. "\n" ..
|
|
"fertiliser\n" ..
|
|
tostring(mem.inventory["fertiliser"])
|
|
digiline_send("treemon", str)
|
|
interrupt(1)
|
|
end
|
|
end
|
|
|
|
if event.type == "on" and event.pin.name == "A" then
|
|
mem.state = "prepare"
|
|
interrupt(1)
|
|
end
|
|
|
|
if event.type == "off" and event.pin.name == "A" then
|
|
mem.state = "idle"
|
|
interrupt(1)
|
|
end
|