v1.1.0 loaded cleanly and still did nothing, so the NetworkValue rewrite was not the whole story. Rather than keep guessing at which link in the chain is dead, add indicator icons bound to the internal signals. An indicator draws while its toggle is off, so one glance at a radiator now separates the cases that were previously indistinguishable: wrench absent -> the AddBase never merged; nothing in the mod runs thermal missile -> no thermal-ammo signal arriving resource -> no hold signal arriving from a battery Tests check that every added indicator binds to a component that exists and to a sprite that exists in the indicators atlas. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011oLWY1G6S8U35bi2FxVWni
97 lines
2.6 KiB
Plaintext
97 lines
2.6 KiB
Plaintext
// ABOUT ME
|
|
// Components merged into the Radiator. They receive the three network values
|
|
// this mod broadcasts and combine them into a single gate, AutoPowerToggle,
|
|
// which mod.rules then substitutes for the radiator's vanilla PowerToggle on
|
|
// the parts of the radiator that actually dissipate heat.
|
|
//
|
|
// Each broadcast arrives as a number, 1 or 0, summarised across the network by
|
|
// a NetworkValueReceiver and turned back into a toggle by a threshold at 0.5.
|
|
// A network with no broadcaster at all yields 0, which is why a ship without
|
|
// thermal batteries or thermal launchers keeps vanilla behaviour.
|
|
//
|
|
// The player's manual on/off switch (PowerToggle) is preserved and still wins:
|
|
// a radiator the player has switched off stays off. The automation can only
|
|
// idle a radiator the player has left on.
|
|
//
|
|
// A radiator vents when ANY of these hold:
|
|
// - the network is not asking it to hold (no battery, or battery full)
|
|
// - no launcher on the network is using thermal ammunition
|
|
// - some part is overflowing heat right now (safety net, overrides all)
|
|
|
|
AutoRad_HoldSignal
|
|
{
|
|
Type = NetworkValueReceiver
|
|
Categories = [ auto_radiator_hold ]
|
|
Mode = Max
|
|
AllowUncategorized = false
|
|
}
|
|
|
|
AutoRad_ThermalAmmoSignal
|
|
{
|
|
Type = NetworkValueReceiver
|
|
Categories = [ auto_radiator_ammo_user ]
|
|
Mode = Max
|
|
AllowUncategorized = false
|
|
}
|
|
|
|
AutoRad_ForceVentSignal
|
|
{
|
|
Type = NetworkValueReceiver
|
|
Categories = [ auto_radiator_force_vent ]
|
|
Mode = Max
|
|
AllowUncategorized = false
|
|
}
|
|
|
|
AutoRad_IsHolding
|
|
{
|
|
Type = ThresholdToggle
|
|
ValueFrom = AutoRad_HoldSignal
|
|
MinAmount = 0.5
|
|
}
|
|
|
|
AutoRad_ThermalAmmoInUse
|
|
{
|
|
Type = ThresholdToggle
|
|
ValueFrom = AutoRad_ThermalAmmoSignal
|
|
MinAmount = 0.5
|
|
}
|
|
|
|
AutoRad_ForceVent
|
|
{
|
|
Type = ThresholdToggle
|
|
ValueFrom = AutoRad_ForceVentSignal
|
|
MinAmount = 0.5
|
|
}
|
|
|
|
AutoRad_VentAllowed
|
|
{
|
|
Type = MultiToggle
|
|
Toggles
|
|
[
|
|
{ Toggle = AutoRad_IsHolding; Invert = true }
|
|
{ Toggle = AutoRad_ThermalAmmoInUse; Invert = true }
|
|
AutoRad_ForceVent
|
|
]
|
|
Mode = Any
|
|
}
|
|
|
|
// The replacement gate. PowerToggle is the radiator's vanilla UIToggle, so the
|
|
// player's switch remains the master control.
|
|
AutoPowerToggle
|
|
{
|
|
Type = MultiToggle
|
|
Toggles = [ PowerToggle, AutoRad_VentAllowed ]
|
|
Mode = All
|
|
}
|
|
|
|
// Diagnostic anchor. An indicator icon shows while its toggle is OFF, so an
|
|
// icon bound to this one is visible whenever these components were merged onto
|
|
// the part at all. If that icon is absent, the AddBase in mod.rules did not
|
|
// take effect and nothing else in this file is running either -- which is the
|
|
// single most useful thing to be able to tell apart from a dead signal.
|
|
AutoRad_AlwaysOff
|
|
{
|
|
Type = StaticToggle
|
|
ToggleOn = false
|
|
}
|