Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function clamp(value, min, max)
- if (value > max)
- return max
- elseif (value < min)
- return min
- end
- return value
- end
- function emergencyShutdown()
- while true do
- if (r.getCoolantFilledPercentage() < 0.5) and r.getStatus() then
- r.scram()
- cb.sendMessage("Zoe's Reactor shut down due to damage", "Reactor Monitor")
- term.setCursorPos(1,1)
- term.write("Reactor Coolant Level : " .. r.getCoolantFilledPercentage()*100 .. "% ")
- term.setCursorPos(1,2)
- term.write("Reactor Status : " .. tostring(r.getStatus))
- else
- term.setCursorPos(1,1)
- term.write("Reactor Coolant Level : " .. r.getCoolantFilledPercentage()*100 .. "% ")
- term.setCursorPos(1,2)
- term.write("Reactor Status : ")
- if r.getStatus() then
- term.write("On ")
- else
- term.write("Off")
- end
- end
- os.sleep(0.1)
- end
- end
- function waitForPlayerJoin()
- local event, username, dimension = os.pullEvent("playerJoin")
- if username=="zozerelli" then
- os.sleep(10)
- if r.getStatus() then
- cb.sendMessage("Zoe's Reactor is running normally at " .. r.getBurnRate() .. "mb/t", "Reactor Monitor")
- else
- cb.sendMessage("Zoe's Reactor is shut down, maintenence required!", "Reactor Monitor")
- end
- end
- end
- function manageReactorThrottle()
- while true do
- maxEnergy = c.getMaxEnergy()
- curEnergy = c.getEnergy()
- if (curEnergy > maxEnergy*0.8) then
- r.setBurnRate(0)
- else
- br = (curEnergy+maxEnergy*.05)/maxEnergy
- clamp(br,0,1)
- term.setCursorPos(1,3)
- term.write("Current Throttle Percenage" .. br .. "% ")
- r.setBurnRate(maxFuel*br)
- end
- os.sleep(2)
- end
- end
- r = peripheral.wrap("back")
- cb = peripheral.wrap("left")
- pd = peripheral.wrap("right")
- c = peripheral.wrap("top")
- maxFuel = 20
- term.clear()
- while true do
- parallel.waitForAny(emergencyShutdown, waitForPlayerJoin, manageReactorThrottle)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement