kernel = require("kernel") speakerDriver = kernel.addDriver("speaker_driver") local modem = peripheral.find("modem") local monitor = peripheral.wrap("top") controlRoomSpeakers = peripheral.find("speaker") local speakers = { peripheral.wrap("speaker_0"), peripheral.wrap("speaker_1"), peripheral.wrap("speaker_2"), peripheral.wrap("speaker_3"), peripheral.wrap("speaker_4"), peripheral.wrap("speaker_5"), peripheral.wrap("speaker_6"), peripheral.wrap("speaker_7"), peripheral.wrap("speaker_8"), peripheral.wrap("speaker_9"), peripheral.wrap("speaker_10"), peripheral.wrap("speaker_11"), } local lines = { "ELLO MATE LOVELY DAY INIT YOU GOT ANYYYY BEEEANSS AND TOAST ON YA MATE ID LOVE TO HAVE SOME BEANS N TOAST", "ITS ME NOVA ELLO THEY GOT ME LOCKED IN A BLOOOODY BOX MATE", "I AIN'T GOT NO TEA LEFT, THIS IS A BLOODY EMERGENCY", "OI YOU GOT ANY CHIPPIES IN THE FRIDGE?", "DON'T PRESS THAT BUTTON, IT OPENS THE VOID", "I’M JUST A BOX WITH A VOICE, DON'T JUDGE ME", "THE FLOOR IS LAVA, NO REALLY", "NOVA SYSTEM ONLINE, FULL OF BANTER", "GOT MILK? I GOT CEREAL BUT NO MILK", "SOMEONE KEEPS TURNING ME OFF, WHO IS IT?", "DO YOU EVEN LIFT, BRO?", "OI, CLOSE THE AIRLOCK, IT’S COLD" } function setNewLine() local x,y = monitor.getCursorPos() monitor.setCursorPos(1, y + 1) monitor.clearLine() end local function startup() speakerDriver.startup() --speakerDriver.playControlRoomAlarm(controlRoomSpeakers) --speakerDriver.playExternalAlarm(controlRoomSpeakers) --speakerDriver.playInternalAlarm(controlRoomSpeakers) --speakerDriver.playTTSFile(speakers, "ELLO MATE LOVELY DAY INIT YOU GOT ANYYYY BEEEANSS AND TOAST ON YA MATE ID LOVE TO HAVE SOME BEANS N TOAST") --speakerDriver.playTTSFile(speakers, "ITS ME NOVA ELLO THEY GOT ME LOCKED IN A BLOOOODY BOX MATE") local tasks = {} for i = 1, #speakers do local msg = lines[i] or ("Speaker " .. i) -- fallback if lines run out local speaker = speakers[i] tasks[i] = function() speakerDriver.playTTSFile({ speaker }, msg) end end parallel.waitForAll(table.unpack(tasks)) end local function run() monitor.setTextScale(0.5) monitor.setCursorPos(1,0) startup() while true do setNewLine() monitor.write("Checking for reactor status...") setNewLine() monitor.write("Checking main control loop...") sleep(2) end end return { run = run }