mirror of
https://github.com/osmarks/random-stuff
synced 2024-12-28 02:50:33 +00:00
49 lines
2.2 KiB
Lua
49 lines
2.2 KiB
Lua
|
local modem = {peripheral.find("modem", function(_, o) return o.isWireless() end)}
|
||
|
local name = os.getComputerLabel()
|
||
|
local function send(...)
|
||
|
for _, modem in pairs(modem) do
|
||
|
modem.transmit(48869, 48869, {...})
|
||
|
end
|
||
|
end
|
||
|
|
||
|
local reactor
|
||
|
repeat reactor = peripheral.find "fissionReactorLogicAdapter" print "checking reactor..." sleep(0.5) until reactor and reactor.getCoolant
|
||
|
local max_burn = settings.get "max_burn"
|
||
|
local turbine = peripheral.find "turbineValve"
|
||
|
local min_burn = 0.1
|
||
|
local scram_latch = false
|
||
|
|
||
|
while true do
|
||
|
local coolant = reactor.getCoolant().amount
|
||
|
send("mek_reactor_coolant_mb", "coolant in reactor tank", coolant)
|
||
|
local coolant_capacity = reactor.getCoolantCapacity()
|
||
|
send("mek_reactor_coolant_capacity_mb", "coolant in reactor max capacity", coolant_capacity)
|
||
|
local waste = reactor.getWaste().amount
|
||
|
local waste_capacity = reactor.getWasteCapacity()
|
||
|
send("mek_reactor_waste_mb", "waste in reactor tank", waste)
|
||
|
send("mek_reactor_waste_capacity_mb", "waste in reactor max capacity", waste_capacity)
|
||
|
local fuel = reactor.getFuel().amount
|
||
|
local fuel_capacity = reactor.getFuelCapacity()
|
||
|
send("mek_reactor_fuel_mb", "fuel in reactor tank", fuel)
|
||
|
send("mek_reactor_fuel_capacity_mb", "fuel in reactor max capacity", fuel_capacity)
|
||
|
local temperature = reactor.getTemperature()
|
||
|
send("mek_reactor_temperature_k", "temperature of reactor", temperature)
|
||
|
send("mek_reactor_burn_rate_mb_t", "fuel burn rate of reactor", reactor.getActualBurnRate())
|
||
|
-- turbine status
|
||
|
local turbine_percent = turbine.getEnergy() / turbine.getEnergyNeeded()
|
||
|
send("mc_stored_rf/reactorturbine", "energy stored in RF", turbine.getEnergy())
|
||
|
send("mc_capacity_rf/reactorturbine" , "maximum capacity in RF", turbine.getEnergyNeeded())
|
||
|
if coolant < coolant_capacity / 2 or waste > waste_capacity / 2 or temperature > 500 then
|
||
|
print "SCRAM"
|
||
|
reactor.scram()
|
||
|
scram_latch = true
|
||
|
end
|
||
|
|
||
|
if not scram_latch then
|
||
|
reactor.setBurnRate(math.max(math.min((max_burn - min_burn) * (1 - turbine_percent) + min_burn, max_burn), min_burn))
|
||
|
if not reactor.getStatus() then reactor.activate() end
|
||
|
end
|
||
|
|
||
|
sleep(1)
|
||
|
end
|