Confirmed in game. The radiator's thermal-ammo and hold signals both arrive, VentAllowed goes false, and the radiator idles with its manual switch still on -- heat banked for the launchers instead of vented. The self-test probes did their job: ThresholdToggle was fine, and a mod-defined category carries a value perfectly well. The EMP probe was simply a bad probe -- it read thermal_load_dissipation, which an idled radiator broadcasts as zero, so it was correctly reporting a real zero. Routing in v1.3.0 was the actual cure. Remove the probes and the diagnostic indicators. The repointed power indicator is the one cue a player needs: it now shows on a radiator the mod has idled. Add test_override_values_name_real_components, which catches an Overrides value naming a component that does not exist -- a fourth way to produce a mod that loads clean and does nothing, and one this very commit introduced while stripping the scaffolding. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011oLWY1G6S8U35bi2FxVWni
141 lines
5.3 KiB
Plaintext
141 lines
5.3 KiB
Plaintext
// ABOUT ME
|
|
// Manifest and patch list for "Auto Radiator".
|
|
//
|
|
// What it does: radiators stop dumping heat that the ship still wants. Thermal
|
|
// Canister Missiles are built from the ship's own heat, so a radiator running
|
|
// flat out is competing with the launchers for ammunition -- in vanilla they
|
|
// pull from the same pool, with the same Mode, in the same category, and
|
|
// Data/ships/priorities.rules defines no ordering between them.
|
|
//
|
|
// The patches below add components to four vanilla parts and then repoint the
|
|
// radiator's heat dissipation, steam plume, dissipation readout and power
|
|
// indicator from the raw PowerToggle to the AutoPowerToggle gate defined in
|
|
// components/radiator_auto.rules.
|
|
//
|
|
// Nothing here changes a stat or a number. It only changes when radiators run.
|
|
|
|
ID = ganter.auto_radiator
|
|
Name = "Auto Radiator"
|
|
Version = 2.0.0
|
|
CompatibleGameVersions = ["0.30.4c", "0.30.4"]
|
|
ModifiesGameplay = true
|
|
Author = "Tobias Ganter"
|
|
|
|
Description = "Radiators only vent surplus heat instead of running constantly.\n\n"\
|
|
"Thermal Canister Missiles are built from your ship's own heat, and in vanilla "\
|
|
"your radiators compete with your launchers for it -- the heat network is drained "\
|
|
"to keep radiators busy, and your missiles reload at whatever rate your reactors "\
|
|
"happen to produce.\n\n"\
|
|
"With this mod, radiators hold off while the heat network still has room, keeping "\
|
|
"your thermal batteries topped up as a deep missile reserve, and vent once the "\
|
|
"network is nearly full.\n\n"\
|
|
"- Only applies when a launcher is actually set to Thermal Canister Missiles. "\
|
|
"Otherwise radiators behave exactly as in vanilla.\n\n"\
|
|
"- Ships with no thermal battery are unaffected.\n\n"\
|
|
"- Your manual radiator on/off switch still overrides everything.\n\n"\
|
|
"- Safety net: if any part is actually overflowing heat, every radiator vents "\
|
|
"immediately regardless of the threshold."
|
|
|
|
Actions
|
|
[
|
|
// --- Broadcasters -----------------------------------------------------
|
|
|
|
// The thermal battery decides when the network has surplus.
|
|
{
|
|
Action = AddBase
|
|
AddBaseTo = "<ships/terran/thermal_battery/thermal_battery.rules>/Part/Components"
|
|
BaseToAdd = &<components/thermal_battery_vent.rules>
|
|
}
|
|
|
|
// The missile launcher reports whether it is set to thermal ammunition.
|
|
{
|
|
Action = AddBase
|
|
AddBaseTo = "<ships/terran/missile_launcher/missile_launcher.rules>/Part/Components"
|
|
BaseToAdd = &<components/launcher_ammo_signal.rules>
|
|
}
|
|
|
|
// Every overclockable part reports when it is actually overflowing heat.
|
|
{
|
|
Action = AddBase
|
|
AddBaseTo = "<ships/base_part_overclock.rules>/Part/Components"
|
|
BaseToAdd = &<components/overclock_overflow_signal.rules>
|
|
}
|
|
|
|
// --- Receiver ---------------------------------------------------------
|
|
|
|
{
|
|
Action = AddBase
|
|
AddBaseTo = "<ships/terran/radiator/radiator.rules>/Part/Components"
|
|
BaseToAdd = &<components/radiator_auto.rules>
|
|
}
|
|
|
|
// --- Attach the radiator's receivers to the network -------------------
|
|
//
|
|
// A network component only reaches the network if a route leads to it. The
|
|
// radiator's ports anchor on NetworkedHeatBuffer, and its existing Router
|
|
// bridges that anchor to the other network components -- which is how
|
|
// vanilla's own NetworkedThermalDissipationLoadValue gets connected.
|
|
// Without these three entries the receivers are inert and read nothing,
|
|
// which makes the vent gate permanently open.
|
|
{
|
|
Action = AddMany
|
|
AddTo = "<ships/terran/radiator/radiator.rules>/Part/Components/Router/RouteGenerators/0/Routes"
|
|
ManyToAdd
|
|
[
|
|
[NetworkedHeatBuffer, AutoRad_HoldSignal, 0]
|
|
[NetworkedHeatBuffer, AutoRad_ThermalAmmoSignal, 0]
|
|
[NetworkedHeatBuffer, AutoRad_ForceVentSignal, 0]
|
|
]
|
|
}
|
|
|
|
// --- Rewire the radiator ---------------------------------------------
|
|
//
|
|
// The radiator's dissipation is gated on PowerToggle directly, not on its
|
|
// IsOperational toggle, so each of these three components is repointed at
|
|
// the new gate. IsOperational and CommandConsumer are deliberately left
|
|
// alone: an idling radiator still holds its command points, because it is
|
|
// still assigned and will resume without player input.
|
|
|
|
// The actual heat removal.
|
|
{
|
|
Action = Overrides
|
|
OverrideIn = "<ships/terran/radiator/radiator.rules>/Part/Components/HeatDissipationConverter"
|
|
Overrides
|
|
{
|
|
OperationalToggle = AutoPowerToggle
|
|
}
|
|
}
|
|
|
|
// The steam plume, so an idling radiator looks idle.
|
|
{
|
|
Action = Overrides
|
|
OverrideIn = "<ships/terran/radiator/radiator.rules>/Part/Components/SteamEffects"
|
|
Overrides
|
|
{
|
|
OperationalToggle = AutoPowerToggle
|
|
}
|
|
}
|
|
|
|
// The dissipation value that drives the glow and the network load readout.
|
|
{
|
|
Action = Overrides
|
|
OverrideIn = "<ships/terran/radiator/radiator.rules>/Part/Components/DissipationSmoothingTargetValue"
|
|
Overrides
|
|
{
|
|
Toggle = AutoPowerToggle
|
|
}
|
|
}
|
|
|
|
// The "powered off" indicator icon, so an idling radiator is visibly idle
|
|
// rather than looking identical to a working one. Without this the only cue
|
|
// that the mod is doing anything is the absence of the steam plume.
|
|
{
|
|
Action = Overrides
|
|
OverrideIn = "<ships/terran/radiator/radiator.rules>/Part/Components/Indicators/Indicators/0"
|
|
Overrides
|
|
{
|
|
Toggle = AutoPowerToggle
|
|
}
|
|
}
|
|
]
|