Not a member of Pastebin yet?
                        Sign Up,
                        it unlocks many cool features!                    
                - --"Regulator" for BigReactor actively cooled reactors.
 - --Scanning interval in seconds:
 - local AdjustInterval = 600
 - --Detect directly adjacent devices function
 - function detectDevice(DeviceName)
 - DeviceSide="none"
 - for k,v in pairs(redstone.getSides()) do
 - if peripheral.getType(v)==DeviceName then
 - DeviceSide = v
 - break
 - end
 - end
 - return(DeviceSide)
 - end
 - --list all connected peripherals:
 - local peripheralList = peripheral.getNames()
 - --locate reactor
 - reactorside=detectDevice("Reactor")
 - if reactorside~="none" then
 - reactor=peripheral.wrap(reactorside)
 - else
 - for Index = 1, #peripheralList do
 - if string.find(peripheralList[Index], "Reactor") then
 - reactor=peripheral.wrap(peripheralList[Index])
 - print ("Reactor wired modem: "..peripheralList[Index].." connected.")
 - end
 - end
 - end
 - --locate monitor
 - MonitorSide=detectDevice("monitor")
 - if MonitorSide~="none" then
 - monitor=peripheral.wrap(MonitorSide)
 - print ("Monitor on the " .. MonitorSide .. " connected.")
 - else
 - for Index = 1, #peripheralList do
 - if string.find(peripheralList[Index], "monitor") then
 - monitor=peripheral.wrap(peripheralList[Index])
 - print ("Monitor on wired modem: "..peripheralList[Index].." connected.")
 - end
 - end --for
 - if monitor == "none" then
 - print ("Warning - No Monitor attached, continuing without.")
 - end
 - end
 - w,h=monitor.getSize()
 - print(w)
 - print(h)
 - if monitor ~= "none" then
 - monitor.clear()
 - monitor.setTextColor(colors.blue)
 - monitor.setCursorPos(1,1)
 - monitor.write("BR Automatic Steam Regulator")
 - monitor.setTextColor(colors.white)
 - monitor.setCursorPos(1,2)
 - monitor.write("-----------------------------")
 - monitor.setCursorPos(1,6)
 - monitor.write("-------------------")
 - monitor.setCursorPos(1,10)
 - monitor.write("-------------------")
 - for i=3, 12 do
 - monitor.setCursorPos(20, i)
 - monitor.write("|")
 - end
 - monitor.setCursorPos(2,3)
 - monitor.write("Temp:")
 - monitor.setCursorPos(2,4)
 - monitor.write("Steam:")
 - monitor.setCursorPos(2,5)
 - monitor.write("Reactiv:")
 - monitor.setCursorPos(2,7)
 - monitor.write("Fuel:")
 - monitor.setCursorPos(2,8)
 - monitor.write("Waste:")
 - monitor.setCursorPos(2,9)
 - monitor.write("Rate:")
 - monitor.setCursorPos(22,3)
 - monitor.write("Control")
 - monitor.setCursorPos(22,4)
 - monitor.write("Rod:")
 - monitor.setCursorPos(22,10)
 - monitor.write("Next:")
 - monitor.setCursorPos(2,11)
 - monitor.write("Cooling:")
 - monitor.setCursorPos(13,11)
 - monitor.write("Reactor")
 - monitor.setCursorPos(16,3)
 - monitor.write("C")
 - monitor.setCursorPos(16,4)
 - monitor.write("mB/t")
 - monitor.setCursorPos(16,5)
 - monitor.write("%")
 - monitor.setCursorPos(14,7)
 - monitor.write("mB")
 - --monitor.setCursorPos(19,7)
 - --monitor.write("%")
 - monitor.setCursorPos(14,8)
 - monitor.write("mB")
 - monitor.setCursorPos(14,9)
 - monitor.write("mB/t")
 - monitor.setCursorPos(27,5)
 - monitor.write("%")
 - monitor.setCursorPos(22,12)
 - monitor.write("- O +")
 - monitor.setBackgroundColour((colours.grey))
 - monitor.setCursorPos(22,7)
 - monitor.write("Control")
 - monitor.setCursorPos(22,8)
 - monitor.write(" Rod ")
 - monitor.setCursorPos(22,9)
 - monitor.write("Adjust ")
 - monitor.setBackgroundColour((colours.black))
 - end
 - function snooze(time)
 - for i = time,0,-1 do
 - if monitor ~= "none" then
 - monitor.setCursorPos(11,3)
 - local fueltemp = math.ceil(reactor.getFuelTemperature())
 - if fueltemp > 1000 then
 - monitor.setTextColor(colors.red)
 - end
 - monitor.write(fueltemp.." ")
 - monitor.setTextColor(colors.white)
 - monitor.setCursorPos(11,4)
 - monitor.write(math.ceil(reactor.getHotFluidProducedLastTick()).." ")
 - monitor.setCursorPos(11,5)
 - monitor.write(math.ceil(reactor.getFuelReactivity()).." ")
 - monitor.setCursorPos(8,7)
 - monitor.write(reactor.getFuelAmount().." ")
 - --monitor.setCursorPos(16,7)
 - --monitor.write(math.ceil(100*((reactor.getFuelAmount())/(reactor.getFuelAmountMax()))).." ")
 - monitor.setCursorPos(9,8)
 - monitor.write(reactor.getWasteAmount().." ")
 - local fuelrate = (math.ceil(1000*(reactor.getFuelConsumedLastTick())))/1000
 - monitor.setCursorPos(8,9)
 - monitor.write(fuelrate)
 - monitor.setCursorPos(23,5)
 - monitor.write(reactor.getControlRodLevel(0).." ")
 - end
 - --test for on/off state and cooling
 - if monitor ~= "none" then
 - if reactor.getActive() then
 - monitor.setBackgroundColour((colours.green))
 - monitor.setCursorPos(13,12)
 - monitor.write("ON")
 - monitor.setBackgroundColour((colours.grey))
 - monitor.setCursorPos(16,12)
 - monitor.write("OFF")
 - monitor.setBackgroundColour((colours.black))
 - else
 - monitor.setBackgroundColour((colours.grey))
 - monitor.setCursorPos(13,12)
 - monitor.write("ON")
 - monitor.setBackgroundColour((colours.red))
 - monitor.setCursorPos(16,12)
 - monitor.write("OFF")
 - monitor.setBackgroundColour((colours.black))
 - end
 - if reactor.getCoolantAmount() > reactor.getCoolantAmountMax()*0.3 then
 - monitor.setBackgroundColour((colours.green))
 - monitor.setCursorPos(2,12)
 - monitor.write("Supply: OK")
 - monitor.setBackgroundColour((colours.black))
 - else
 - monitor.setBackgroundColour((colours.red))
 - monitor.setCursorPos(2,12)
 - monitor.write("No Cooling")
 - monitor.setBackgroundColour((colours.black))
 - end
 - monitor.setCursorPos(23,11)
 - monitor.write(i)
 - end
 - sleep(1)
 - end
 - end
 - --boost up steam production initially
 - if monitor ~= "none" then
 - monitor.setBackgroundColour((colours.green))
 - monitor.setCursorPos(22,7)
 - monitor.write("Control")
 - monitor.setCursorPos(22,8)
 - monitor.write(" Rod ")
 - monitor.setCursorPos(22,9)
 - monitor.write("Adjust ")
 - monitor.setBackgroundColour((colours.black))
 - end
 - steamOld = reactor.getHotFluidProducedLastTick()
 - reactor.setAllControlRodLevels(reactor.getControlRodLevel(1)-1)
 - if monitor ~= "none" then
 - monitor.setCursorPos(24,12)
 - monitor.write("<")
 - end
 - snooze(10)
 - steamNew = reactor.getHotFluidProducedLastTick()
 - while steamNew > steamOld do
 - print("boosting production initially")
 - steamOld = reactor.getHotFluidProducedLastTick()
 - reactor.setAllControlRodLevels(reactor.getControlRodLevel(1)-5)
 - snooze(5)
 - steamNew = reactor.getHotFluidProducedLastTick()
 - end
 - snooze(20)
 - if monitor ~= "none" then
 - monitor.setCursorPos(24,12)
 - monitor.write(" ")
 - end
 - while true do
 - if monitor ~= "none" then
 - monitor.setBackgroundColour((colours.green))
 - monitor.setCursorPos(22,7)
 - monitor.write("Control")
 - monitor.setCursorPos(22,8)
 - monitor.write(" Rod ")
 - monitor.setCursorPos(22,9)
 - monitor.write("Adjust ")
 - monitor.setBackgroundColour((colours.black))
 - end
 - --Raise control rods until steam production lowers:
 - steamOld = reactor.getHotFluidProducedLastTick()
 - reactor.setAllControlRodLevels(reactor.getControlRodLevel(1)+1)
 - if monitor ~= "none" then
 - monitor.setCursorPos(26,12)
 - monitor.write(">")
 - end
 - snooze(20)
 - steamNew = reactor.getHotFluidProducedLastTick()
 - while steamNew == steamOld do
 - steamOld1 = reactor.getHotFluidProducedLastTick()
 - print("steamOld1:"..steamOld1)
 - sleep(0.5)
 - steamOld2 = reactor.getHotFluidProducedLastTick()
 - print("steamOld2:"..steamOld2)
 - if steamOld1 < steamOld2 and steamOld1 ~= 0 then
 - steamOld = steamOld1
 - else
 - steamOld = steamOld2
 - end
 - reactor.setAllControlRodLevels(reactor.getControlRodLevel(1)+1)
 - snooze(20)
 - steamNew = reactor.getHotFluidProducedLastTick()
 - end
 - if monitor ~= "none" then
 - monitor.setCursorPos(26,12)
 - monitor.write(" ")
 - end
 - --raise steam production again to the found limit
 - while reactor.getHotFluidProducedLastTick() < (steamOld-2) do
 - print("raise steam production to found limit:"..steamOld)
 - reactor.setAllControlRodLevels(reactor.getControlRodLevel(1)-1)
 - if monitor ~= "none" then
 - monitor.setCursorPos(24,12)
 - monitor.write("<")
 - end
 - snooze(10)
 - end
 - if monitor ~= "none" then
 - monitor.setCursorPos(24,12)
 - monitor.write(" ")
 - monitor.setBackgroundColour((colours.grey))
 - monitor.setCursorPos(22,7)
 - monitor.write("Control")
 - monitor.setCursorPos(22,8)
 - monitor.write(" Rod ")
 - monitor.setCursorPos(22,9)
 - monitor.write("Adjust ")
 - monitor.setBackgroundColour((colours.black))
 - end
 - snooze(AdjustInterval)
 - end
 
Advertisement
 
                    Add Comment                
                
                        Please, Sign In to add comment