---------------------------------------------------------------------------- -- Config ---------------------------------------------------------------------------- local occupations = {"guardtower", "barrackstower", "netherworker"} ---------------------------------------------------------------------------- -- INITIALIZATION ---------------------------------------------------------------------------- local colony = peripheral.find("colonyIntegrator") local env = peripheral.find("environmentDetector") local skipNight = false ---------------------------------------------------------------------------- -- MAIN ---------------------------------------------------------------------------- local function has_value(tab, val) for index, value in ipairs(tab) do if value == val then return true end end return false end -- Scan for requests periodically. while true do local now = os.time() if colony and peripheral.isPresent(peripheral.getName(colony)) then if colony.isInColony() then if now < 5 or now > 19.5 then if not skipNight then local citizens = colony.getCitizens() skipNight = true for _, citizen in pairs(citizens) do if citizen.home ~= nil and textutils.serialiseJSON(citizen.location, true) ~= textutils.serialiseJSON(citizen.bedPos, true) then skipNight = false if citizen.work and has_value(occupations, citizen.work.type) then skipNight = true end if not skipNight then if citizen.work then term.clear() term.setCursorPos(1, 1) print("name: ", citizen.name, "job: ", citizen.work.type) sleep(0.15) else term.clear() end break end end end if skipNight then redstone.setOutput("right", true) sleep(1) redstone.setOutput("right", false) else redstone.setOutput("right", false) end end else skipNight = false redstone.setOutput("right", false) end end else colony = peripheral.find("colonyIntegrator") end -- Rain/Thunder disabler if env and peripheral.isPresent(peripheral.getName(env)) then if env.isRaining() == true or env.isThunder() == true then redstone.setOutput("left", true) sleep(1) redstone.setOutput("left", false) else redstone.setOutput("left", false) end else colony = peripheral.find("environmentDetector") end -- Rain/Thunder disabler sleep(1) end