Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- relies on two detecting tubes and one digilines injector
- -- available tube informs the system of new items
- -- sent tube informs the system of successfully sent items
- -- send is the channel the injector uses
- if event.type == "program" then
- mem.queue = mem.queue or {}
- mem.inventory = mem.inventory or {}
- mem.centrifuge = mem.centrifuge or {}
- mem.inventory["technic:uranium0_dust"] = -500000
- mem.inventory["technic:uranium35_dust"] = -500000
- interrupt(1)
- elseif event.type == "interrupt" then
- interrupt(1)
- if #mem.queue > 0 then
- mem.queue[1].time = mem.queue[1].time - 1
- if mem.queue[1].time <= 0 then
- local command = table.remove(mem.queue, 1)
- if command.action == "increment" then
- if not mem.inventory[command.name] then mem.inventory[command.name] = 0 end
- mem.inventory[command.name] = mem.inventory[command.name] + 1
- elseif command.action == "send" then
- digiline_send("send", command.name)
- end
- end
- mem.sent = false
- elseif not mem.sent then
- local choice, current
- current = 0
- for name, count in pairs(mem.inventory) do
- if count > current then
- choice = name
- current = count
- end
- end
- if choice and current > 1 then
- if current % 2 == 0 then
- current = current - 2
- else
- current = current - 1
- end
- digiline_send("send", choice)
- while current > 0 do
- table.insert(mem.queue, { time = 2, name = choice, action = "send" })
- current = current - 1
- end
- mem.sent = true
- end
- end
- elseif event.type == "digiline" then
- if event.channel == "available" then
- table.insert(mem.queue, { time = 6, name = event.msg, action = "increment" })
- elseif event.channel == "sent" then
- if not mem.inventory[event.msg] then mem.inventory[event.msg] = 0 end
- mem.inventory[event.msg] = mem.inventory[event.msg] - 1
- if not mem.centrifuge[event.msg] then mem.centrifuge[event.msg] = 0 end
- mem.centrifuge[event.msg] = mem.centrifuge[event.msg] + 1
- end
- end
Add Comment
Please, Sign In to add comment