Advertisement
TwitchBlade

Zoe's Reactor Controller

May 1st, 2024 (edited)
670
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.97 KB | None | 0 0
  1. function clamp(value, min, max)
  2.   if (value > max)
  3.     return max
  4.   elseif (value < min)
  5.     return min
  6.   end
  7.   return value
  8. end
  9.  
  10. function emergencyShutdown()
  11.   while true do
  12.     if (r.getCoolantFilledPercentage() < 0.5) and r.getStatus() then
  13.       r.scram()
  14.       cb.sendMessage("Zoe's Reactor shut down due to damage", "Reactor Monitor")
  15.       term.setCursorPos(1,1)
  16.       term.write("Reactor Coolant Level : " .. r.getCoolantFilledPercentage()*100 .. "%     ")
  17.       term.setCursorPos(1,2)
  18.       term.write("Reactor Status : " .. tostring(r.getStatus))
  19.     else
  20.       term.setCursorPos(1,1)
  21.       term.write("Reactor Coolant Level : " .. r.getCoolantFilledPercentage()*100 .. "%     ")
  22.       term.setCursorPos(1,2)
  23.       term.write("Reactor Status : ")
  24.       if r.getStatus() then
  25.       term.write("On ")
  26.       else
  27.         term.write("Off")
  28.       end
  29.     end
  30.     os.sleep(0.1)
  31.   end
  32. end
  33.  
  34. function waitForPlayerJoin()
  35.   local event, username, dimension = os.pullEvent("playerJoin")
  36.   if username=="zozerelli" then
  37.     os.sleep(10)
  38.     if r.getStatus() then
  39.       cb.sendMessage("Zoe's Reactor is running normally at " .. r.getBurnRate() .. "mb/t", "Reactor Monitor")
  40.     else
  41.       cb.sendMessage("Zoe's Reactor is shut down, maintenence required!", "Reactor Monitor")
  42.     end
  43.   end
  44. end
  45.  
  46. function manageReactorThrottle()
  47.   while true do
  48.     maxEnergy = c.getMaxEnergy()
  49.     curEnergy = c.getEnergy()  
  50.     if (curEnergy > maxEnergy*0.8) then
  51.       r.setBurnRate(0)
  52.     else
  53.       br = (curEnergy+maxEnergy*.05)/maxEnergy
  54.       clamp(br,0,1)
  55.       term.setCursorPos(1,3)
  56.       term.write("Current Throttle Percenage" .. br .. "%            ")
  57.       r.setBurnRate(maxFuel*br)
  58.     end
  59.     os.sleep(2)
  60.   end
  61. end
  62.  
  63.  
  64. r = peripheral.wrap("back")
  65. cb = peripheral.wrap("left")
  66. pd = peripheral.wrap("right")
  67. c = peripheral.wrap("top")
  68.  
  69. maxFuel = 20
  70.  
  71.  
  72. term.clear()
  73. while true do
  74.   parallel.waitForAny(emergencyShutdown, waitForPlayerJoin, manageReactorThrottle)
  75. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement