Xenoti

reactors

Feb 1st, 2015
261
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.37 KB | None | 0 0
  1. dofile("devices")
  2.  
  3. print ("Running Reactor Control...")
  4.  
  5.  
  6. local maxEnergy = 10000000
  7. --local controlRodPos = math.floor((reactor.getEnergyStored()/maxEnergy) * 100)
  8. local controlRodPos = reactor.getControlRodLevel(0)
  9. local lastEnergy = 987654321
  10.  
  11. local function maxPercent(percent)
  12. return (maxEnergy * percent)/100
  13. end
  14.  
  15. local function updateMonitor()
  16. monitor.clear()
  17. local x = 3
  18. local y = 3
  19. monitor.setCursorPos(x,y)
  20. monitor.write("Generating: "..tostring(reactor.getEnergyProducedLastTick()).." rf/t")
  21. monitor.setCursorPos(x,y+1)
  22. monitor.write("Consuming: "..tostring(reactor.getFuelConsumedLastTick()).." mb/t")
  23. monitor.setCursorPos(x,y+2)
  24. if lastEnergy == 987654321 then
  25. monitor.write("Calculating Output...")
  26. else
  27. monitor.write("Outputing: "..tostring(math.floor((lastEnergy-reactor.getEnergyStored())/20)+reactor.getEnergyProducedLastTick()).." rf/t ")
  28. end
  29. monitor.setCursorPos(x,y+3)
  30. monitor.write("Power: "..tostring(math.floor((reactor.getEnergyStored()/maxEnergy)*100)).."%")
  31.  
  32. lastEnergy = reactor.getEnergyStored()
  33. end
  34.  
  35. while true do
  36. updateMonitor()
  37. reactor.setActive(true)
  38. local energy=reactor.getEnergyStored()
  39. local adjustAmount=0
  40. if energy < maxPercent(10) then
  41. adjustAmount = -100 --fire up the reactor all the way
  42. -- elseif energy < maxPercent(20) then
  43. -- adjustAmount = -50
  44. -- elseif energy < maxPercent(30) then
  45. -- adjustAmount = -25
  46. -- elseif energy < maxPercent(40) then
  47. -- adjustAmount = -10
  48. -- elseif energy < maxPercent(45) then
  49. -- adjustAmount = -1
  50.  
  51. -- try to hold the internal power level between 45 and 55 percent
  52.  
  53. elseif energy > maxPercent(90) then
  54. adjustAmount = 100
  55. -- elseif energy > maxPercent(80) then
  56. -- adjustAmount = 25
  57. -- elseif energy > maxPercent(70) then
  58. -- adjustAmount = 15
  59. -- elseif energy > maxPercent(60) then
  60. -- adjustAmount = 10
  61. -- elseif energy > maxPercent(55) then
  62. -- adjustAmount = 1
  63. end
  64.  
  65. if (adjustAmount + controlRodPos) > 100 then
  66. controlRodPos = 100
  67. elseif (adjustAmount + controlRodPos) < 0 then
  68. controlRodPos = 0
  69. else
  70. controlRodPos = controlRodPos + adjustAmount
  71. end
  72.  
  73. if reactor.getControlRodLevel(0) ~= controlRodPos then
  74. reactor.setAllControlRodLevels(controlRodPos)
  75. print ("Adjusting Control Rods ("..tostring(controlRodPos)..")")
  76. end
  77. sleep(1)
  78. end
Advertisement
Add Comment
Please, Sign In to add comment