mirror of
https://github.com/osmarks/random-stuff
synced 2024-10-31 19:06:15 +00:00
42 lines
1.9 KiB
Lua
42 lines
1.9 KiB
Lua
local modem = {peripheral.find("modem", function(_, o) return o.isWireless() end)}
|
|
local gas_tanks = {peripheral.find "Ultimate Gas Tank"}
|
|
local name = os.getComputerLabel()
|
|
local function send(...)
|
|
for _, modem in pairs(modem) do
|
|
modem.transmit(48869, 48869, {...})
|
|
end
|
|
end
|
|
|
|
local fuel_depletion_latch = false
|
|
local reactor = peripheral.find "Reactor Logic Adapter"
|
|
|
|
while true do
|
|
if type(reactor.getEnergy()) == "string" then
|
|
print("anomalous stringment", reactor.getEnergy())
|
|
else
|
|
local energy = reactor.getEnergy() / reactor.getMaxEnergy()
|
|
send("mek_reactor_energy/" .. name, "fraction of fusion reactor's energy buffer which is full", energy)
|
|
send("mek_reactor_plastemp/" .. name, "reported plasma temperature", reactor.getPlasmaHeat())
|
|
send("mek_reactor_casetemp/" .. name, "reported case temperature", reactor.getCaseHeat())
|
|
local total_stored, total_max = 0, 0
|
|
for _, tank in pairs(gas_tanks) do
|
|
total_max = total_max + tank.getMaxGas()
|
|
total_stored = total_stored + tank.getStoredGas()
|
|
end
|
|
local tritium = total_stored / total_max
|
|
send("mek_reactor_tritium/" .. name, "fraction of tritium buffer filled", tritium)
|
|
if not fuel_depletion_latch and tritium < 0.5 then
|
|
print "WARNING: Contingency Beta-4 initiated."
|
|
fuel_depletion_latch = true
|
|
end
|
|
local injection_rate = math.floor(3 + 17 * (math.min(1, 1.1 - energy) / 0.9)) * 2
|
|
print(injection_rate)
|
|
if fuel_depletion_latch then
|
|
injection_rate = 6
|
|
end
|
|
reactor.setInjectionRate(fuel_depletion_latch and 6 or injection_rate)
|
|
send("mek_reactor_injectionrate/" .. name, "fuel injection rate (set by controller)", injection_rate)
|
|
send("mek_reactor_powerout_rft/" .. name, "power output (RF/t)", reactor.getProducing() * 0.4)
|
|
end
|
|
sleep(1)
|
|
end |