Advertisement
popatop15

Untitled

Aug 28th, 2022
1,235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local reactor = peripheral.wrap("left")
  2. local monitor = peripheral.wrap("monitor_0")
  3.  
  4. function resetMonitor()
  5.     monitor.setTextScale(0.9)
  6.     monitor.setTextColor(colors.purple)
  7.     monitor.setBackgroundColor(colors.white)
  8.     monitor.clear()
  9.     monitor.setCursorPos(1,1)
  10. end
  11.  
  12. function mWrite(text)
  13.     local x, y = monitor.getCursorPos()
  14.     monitor.setCursorPos(1, y + 1)
  15.     monitor.clearLine()
  16.     monitor.write(text)
  17. end
  18. function newLine()
  19.     mWrite("")
  20. end
  21.  
  22. function writeReactorTitle()
  23.     local active = reactor.getActive()
  24.     local blitTextColor, blitBackColor, stateText
  25.    
  26.     resetMonitor()
  27.     monitor.blit(" Reactor Status ", "0000000000000000", "ffffffffffffffff")
  28.     monitor.setCursorPos(17,1)
  29.    
  30.     if active then
  31.         stateText = " Active "
  32.         blitTextColor = "00000000"
  33.         blitBackColor = "55555555"
  34.     else
  35.         stateText = " Stopped "
  36.         blitTextColor = "000000000"
  37.         blitBackColor = "eeeeeeeee"
  38.     end
  39.    
  40.     monitor.blit(stateText, blitTextColor, blitBackColor)
  41.     monitor.setCursorPos(1, 3)
  42. end
  43.  
  44.  
  45. while true do
  46.    
  47.     local x, y
  48.  
  49.     local controlRodLevel = reactor.getControlRodLevel(2)
  50.  
  51.     local energyStored = reactor.getEnergyStored()
  52.     local energyMax = 9840000
  53.     local energyPercent = math.floor((energyStored/energyMax)*100)
  54.  
  55.     local fuelStored = reactor.getFuelAmount()
  56.     local fuelMax = 288000
  57.     local fuelPercent = math.floor((fuelStored/fuelMax)*100)
  58.  
  59.     local prodLastTick = math.floor(reactor.getEnergyProducedLastTick())
  60.     local consLastTick = string.sub(tostring(reactor.getFuelConsumedLastTick()), 0, 5)
  61.     local reactivity = math.floor(reactor.getFuelReactivity()/100)
  62.    
  63.     writeReactorTitle()
  64.    
  65.     mWrite("Core: " .. math.floor(reactor.getFuelTemperature()*1.8)+32 .. "°F")
  66.     mWrite("Casing: " .. math.floor(reactor.getCasingTemperature()*1.8)+32 .. "°F")
  67.     newLine()
  68.    
  69.     mWrite("Reactivity: " .. reactivity .. "%")
  70.     newLine()
  71.  
  72.     mWrite("Control Rod Insertion: " .. controlRodLevel .. "%")
  73.     newLine()
  74.     newLine()
  75.     newLine()
  76.    
  77.     local oldTerm = term.redirect(monitor)
  78.     local progEnergy = (math.floor((energyStored/energyMax)*30)+1)
  79.     local progFuel = (math.floor((fuelStored/fuelMax)*30)+1)
  80.    
  81.     x, y = monitor.getCursorPos()
  82.     paintutils.drawFilledBox(2, y, 31, y+2, colors.lightGray)
  83.     paintutils.drawFilledBox(2, y, progEnergy, y+2, colors.green)
  84.     monitor.setCursorPos(3, y+1)
  85.     monitor.write("+" .. prodLastTick/1000 .. "kFE/t")
  86.     monitor.setCursorPos(1, y+5)
  87.  
  88.     x, y = monitor.getCursorPos()
  89.     paintutils.drawFilledBox(2, y, 31, y+2, colors.lightGray)
  90.     paintutils.drawFilledBox(2, y, progFuel, y+2, colors.yellow)
  91.     monitor.setCursorPos(3, y+1)
  92.     monitor.write("-" .. consLastTick .. "mb/t")
  93.     monitor.setCursorPos(1, y+4)
  94.    
  95.     term.redirect(oldTerm)
  96.  
  97.     if energyPercent < 20 then
  98.         reactor.setAllControlRodLevels(0)
  99.     elseif energyPercent < 50 then
  100.         reactor.setAllControlRodLevels(50)
  101.     elseif energyPercent < 70 then
  102.         reactor.setAllControlRodLevels(70)
  103.     elseif energyPercent < 90 then
  104.         reactor.setAllControlRodLevels(90)
  105.     elseif energyPercent > 98 then
  106.         reactor.setAllControlRodLevels(98)
  107.     end
  108.  
  109.     sleep(1)
  110. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement