Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function tableSize(dictionary)
- local size = 0
- for _ in pairs(dictionary) do
- size = size + 1
- end
- return(size)
- end
- print("Starting reactor control")
- print("")
- print("Detecting connected reactors, turbines and capacitors...")
- sleepTime = 30
- capacitorsFull = false
- systemActive = false
- triggeringCapacitorName = "none"
- capacitors = {}
- reactors = {}
- turbines = {}
- for _,connectedPeripheral in pairs(peripheral.getNames()) do
- if string.sub(connectedPeripheral, 1, 12) == "BigReactors-" then
- local peripheralType = peripheral.getType(connectedPeripheral)
- if peripheralType == "BigReactors-Turbine" then
- local peripheralName = string.sub(connectedPeripheral, 13)
- write("Detected " .. peripheralName .. " ")
- write("wrapping... ")
- turbines[connectedPeripheral] = peripheral.wrap(connectedPeripheral)
- turbines[connectedPeripheral].setInductorEngaged(false)
- if turbines[connectedPeripheral].getConnected() then
- print("done.")
- else
- turbines[connectedPeripheral] = nil
- print("error.")
- sleep(1)
- end
- elseif peripheralType == "BigReactors-Reactor" then
- local peripheralName = string.sub(connectedPeripheral, 13)
- write("Detected " .. peripheralName .. " ")
- write("wrapping... ")
- reactors[connectedPeripheral] = peripheral.wrap(connectedPeripheral)
- reactors[connectedPeripheral].setActive(false)
- if reactors[connectedPeripheral].getConnected() then
- print("done.")
- else
- reactors[connectedPeripheral] = nil
- print("error.")
- sleep(1)
- end
- end
- elseif string.sub(connectedPeripheral, 1, 14) == "capacitor_bank" or string.sub(connectedPeripheral, 1, 16) == "draconic_storage" then
- local peripheralType = peripheral.getType(connectedPeripheral)
- if peripheralType == "capacitor_bank" or peripheralType == "draconic_storage" then
- write("Detected " .. connectedPeripheral .. " ")
- write("wrapping... ")
- capacitors[connectedPeripheral] = peripheral.wrap(connectedPeripheral)
- if capacitors[connectedPeripheral].getEnergyStored() then
- print("done.")
- end
- end
- end
- end
- print("")
- print("Detected " .. tableSize(reactors) .. " reactors, " .. tableSize(turbines) .. " turbines and " .. tableSize(capacitors) .. " capacitors.")
- print("")
- print("Initializing reactor control AI...")
- print("AI started in deep sleep mode.")
- print("")
- while true do
- capacitorsFull = true
- for capacitorName,capacitor in pairs(capacitors) do
- if capacitor.getEnergyStored()/capacitor.getMaxEnergyStored() < 0.95 then
- capacitorsFull = false;
- triggeringCapacitorName = capacitorName
- break;
- end
- end
- if not capacitorsFull and not systemActive then
- print("Waking from deep sleep.")
- sleepTime = 1
- systemActive = true
- print(triggeringCapacitorName .. " is not full. Activating reactors...")
- for _,reactor in pairs(reactors) do
- reactor.setActive(true)
- end
- print("Reactors activated. Giving time for the reactors to heat...")
- sleep(5)
- print("Engaging Inductors...")
- for _,turbine in pairs(turbines) do
- turbine.setInductorEngaged(true)
- end
- print("Inductors engaged.")
- elseif capacitorsFull and systemActive then
- systemActive = false
- print("All capacitors are full. Disengaging inductors...")
- for _,turbine in pairs(turbines) do
- turbine.setInductorEngaged(false)
- end
- print("Inductors disengaged. Deactivating reactors...")
- for _,reactor in pairs(reactors) do
- reactor.setActive(false)
- end
- print("Reactors deactivated.")
- print("Entering deep sleep mode.")
- sleepTime = 30
- end
- sleep(sleepTime)
- end
Advertisement
Add Comment
Please, Sign In to add comment