random-stuff/computercraft/mekfr.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