Skip to content

Reactor Controller

HEB2021 edited this page Nov 10, 2026 · 2 revisions

The Reactor Controller

Setting up a reactor controller peripheral you can do,

local reactor = peripheral.find("reactor_controller")

or for a computer where you want to control multiple you can specify the ID directly.

local reactor_0 = peripheral.find("reactor_controller_0")
local reactor_1 = peripheral.find("reactor_controller_1")

These are the new functions we have exposed for use with CC:Tweaked when connecting to a reactor controller block.
Most if not all of these functions won't have descriptions about what they do as they do exactly what they are called. e.g getkEff gets the kEff value that can be found somewhere in the Control Desk Block.

Get information functions

getAxialOffset -- returns number

local reactor = peripheral.find("reactor_controller")

local axialOffset = reactor.getAxialOffset()

getAxialPower -- returns table containing 8 numbers

local reactor = peripheral.find("reactor_controller")

local axialPower = reactor.getAxialPower()

getBeta -- returns number

local reactor = peripheral.find("reactor_controller")

local beta = reactor.getBeta()

getBoron -- returns number

local reactor = peripheral.find("reactor_controller")

local boron = reactor.getBoron()

getColdLegTemp -- returns number (degrees celcius)

local reactor = peripheral.find("reactor_controller")

local coldLegTemp = reactor.getColdLegTemp()

getContainment -- returns number

local reactor = peripheral.find("reactor_controller")

local containment = reactor.getContainment()

getCoolantTankLevel -- returns number (mB) (this is the amount of water in the cold leg intake block itself)

local reactor = peripheral.find("reactor_controller")

local coolantTankLevel = reactor.getCoolantTankLevel()

getCoreMap -- returns 2d table matching dimensions of the reactor interior

local reactor = peripheral.find("reactor_controller")

local coreMap = reactor.getCoreMap()

getDecayHeat -- returns number

local reactor = peripheral.find("reactor_controller")

local decayHeat = reactor.getDecayHeat()

getDecayHeatAfterShutdown -- returns number -- takes an number value of the amount of hours you wish to calculate

local reactor = peripheral.find("reactor_controller")
local hours = 1
local decayHeatAfterShutdown = reactor.getDecayHeatAfterShutdown(hours)

getDNBR -- returns number

local reactor = peripheral.find("reactor_controller")

local DNBR = reactor.getDNBR()

getElectric -- returns number

local reactor = peripheral.find("reactor_controller")

local electric = reactor.getElectric()

getEnrichment -- returns number

local reactor = peripheral.find("reactor_controller")

local enrichment = reactor.getEnrichment()

getFlux -- returns number

local reactor = peripheral.find("reactor_controller")

local flux = reactor.getFlux()

getFuelTankLevel -- returns number (mb) -- the amount of fuel in the reactor

local reactor = peripheral.find("reactor_controller")

local tankfuellevel = reactor.getFuelTankLevel()

getHeatSink -- returns string -- either "legacy" or "steam line"

local reactor = peripheral.find("reactor_controller")

local heatsink = reactor.getHeatSink()

getHotLegTemp -- returns number (degrees celcius)

local reactor = peripheral.find("reactor_controller")

local hotlegtemp = reactor.getHotLegTemp()

getINES -- returns number (same number as the INES in control desk)

local reactor = peripheral.find("reactor_controller")

local INES = reactor.getINES()

getInsertion -- returns number (rod insertion set point, 100% all in, 0% all out)

local reactor = peripheral.find("reactor_controller")

local insertion = reactor.getInsertion()

getIodine -- returns number

local reactor = peripheral.find("reactor_controller")

local iodine = reactor.getIodine()

getkEff -- returns number

local reactor = peripheral.find("reactor_controller")

local kEff = reactor.getkEff()

getLambda -- returns number

local reactor = peripheral.find("reactor_controller")

local lambda = reactor.getLambda()

getLeakage -- returns number

local reactor = peripheral.find("reactor_controller")

local leakage = reactor.getLeakage()

getMaxClad -- returns number

local reactor = peripheral.find("reactor_controller")

local cladTemp = reactor.getMaxClad()

getMaxFuel -- returns number

local reactor = peripheral.find("reactor_controller")

local fuelTemp = reactor.getMaxFuel()

getMelt -- returns number

local reactor = peripheral.find("reactor_controller")

local melt = reactor.getMelt()

getModeration -- returns number

local reactor = peripheral.find("reactor_controller")

local moderation = reactor.getModeration()

getOutputSU -- returns number

local reactor = peripheral.find("reactor_controller")

local su = reactor.getOutputSU()

getPeaking -- returns number

local reactor = peripheral.find("reactor_controller")

local peaking = reactor.getPeaking()

getPeriod -- returns number

local reactor = peripheral.find("reactor_controller")

local period = reactor.getPeriod()

getPower -- returns number

local reactor = peripheral.find("reactor_controller")

local power = reactor.getPower()

getPressure -- returns number

local reactor = peripheral.find("reactor_controller")

local pressure = reactor.getPressure()

getPrimaryCoolantLevel -- returns number

local reactor = peripheral.find("reactor_controller")

local coolantLevel = reactor.getPrimaryCoolantLevel()

getRadiation -- returns number

local reactor = peripheral.find("reactor_controller")

local radiation = reactor.getRadiation()

getReactivity -- returns number

local reactor = peripheral.find("reactor_controller")

local reactivity = reactor.getReactivity()

getRodPosition -- returns number (current rod insertion if they haven't met the set point yet, 100% all in and 0% all out)

local reactor = peripheral.find("reactor_controller")

local rodPosition = reactor.getRodPosition()

getRodReach -- returns number

local reactor = peripheral.find("reactor_controller")

local rodReach = reactor.getRodReach()

getSGLevel -- returns number

local reactor = peripheral.find("reactor_controller")

local sgLevel = reactor.getSGLevel()

getStartupRate -- returns number

local reactor = peripheral.find("reactor_controller")

local sur = reactor.getStartupRate()

getState -- returns string (same value as the top right corner of the control desk "Cold", "Heating", "Critical", etc...)

local reactor = peripheral.find("reactor_controller")

local state = reactor.getState()

getSteamOutput -- returns number (mB/s)

local reactor = peripheral.find("reactor_controller")

local steamOut = reactor.getSteamOutput()

getSteamTankLevel -- returns number (the hot leg reactor port internal buffer level)

local reactor = peripheral.find("reactor_controller")

local steamLevel = reactor.getSteamTankLevel()

getTemperature -- returns number (degrees celcius)

local reactor = peripheral.find("reactor_controller")

local temp = reactor.getTemperature()

getThermalPower -- returns number

local reactor = peripheral.find("reactor_controller")

local thermalPower = reactor.getThermalPower()

getTrips -- returns table containing all the current alarm names e.g {"FLUX HIGH", "PRESS LOW"}

local reactor = peripheral.find("reactor_controller")

local tripMap = reactor.getTrips()

getType -- returns string (returns the type of peripheral, a little redundant to include it here but I will anyway)

local reactor = peripheral.find("reactor_controller")

local type = reactor.getType()

getVoid -- returns number (percent)

local reactor = peripheral.find("reactor_controller")

local void = reactor.getVoid()

getWasteTankLevel -- returns number (mB)

local reactor = peripheral.find("reactor_controller")

local wasteTankLevel = reactor.getWasteTankLevel()

getXenonEq -- returns number (percent, level at which xenon poison will equalize at current power level)

local reactor = peripheral.find("reactor_controller")

local xenonEQ = reactor.getXenonEq()

getXenonPeak -- returns number

local reactor = peripheral.find("reactor_controller")

local xenonPeak = reactor.getXenonPeak()

getXenonPoison -- returns number

local reactor = peripheral.find("reactor_controller")

local xenonPoison = reactor.getXenonPoison()

Is information function

These functions all return booleans

isAlarm -- returns number

local reactor = peripheral.find("reactor_controller")

local alarm = reactor.isAlarm()

isOn -- returns number (quick way to check if the rods are at 100% insertion which means the reactor is off and this returns false)

local reactor = peripheral.find("reactor_controller")

local on = reactor.isOn()

isPumpActive -- returns number (is the pump (blue button labeled pump in control desk) on)

local reactor = peripheral.find("reactor_controller")

local pump = reactor.isPumpActive()

isRodStop -- returns number (is rod stop stopping progression of control rods)

local reactor = peripheral.find("reactor_controller")

local rodStop = reactor.isRodStop()

isScrammed -- returns number

local reactor = peripheral.find("reactor_controller")

local scrammed = reactor.isScrammed()

isVenting -- returns number (is the relief valve open)

local reactor = peripheral.find("reactor_controller")

local venting = reactor.isVenting()

Action functions

These functions let you actually change something about the reactor, they all return nothing

off -- returns number (sets rods to 100% insertion)

local reactor = peripheral.find("reactor_controller")

reactor.off()

on -- returns number (basically resets scram alarm)

local reactor = peripheral.find("reactor_controller")

reactor.on()

scram -- returns number

local reactor = peripheral.find("reactor_controller")

reactor.scram()

setInsertion -- returns number -- takes number (between 0-100) (100% all the way in, 0% all the way out)

local reactor = peripheral.find("reactor_controller")
local insertion = 50
-- Sets insertion to 50%
reactor.setInsertion(insertion)

setPump -- returns number -- takes boolean

local reactor = peripheral.find("reactor_controller")
local turnOn = true
-- Turns on the pump
reactor.setPump(turnOn)

setReliefValve -- returns number -- takes boolean

local reactor = peripheral.find("reactor_controller")
local open = true
-- Opens the valve
reactor.setReliefValve(open)

Events

There are no events yet...

Clone this wiki locally