fix: measure the network, not a battery's storage
v2.0.0 held heat forever: thermal batteries visibly full, parts taking heat damage, radiators still idle. That is the dangerous direction. The ceiling read a thermal battery's own HeatStorage with a percentage threshold. That storage is wrapped by a NetworkResourceStore, and the local read never crossed 98% however full the network actually got, so the battery broadcast "hold" permanently. Measure the network's remaining room directly instead, from the radiator itself, with a bare NetworkResourceInput -- the same way the heat exchanger decides whether it can still push heat. Vent below ~2000 status heat of headroom, hold again above ~6000. Absolute headroom is also the better metric: what matters is room against the generation rate, not a percentage of whatever storage happens to be installed. Polarity is now fail-safe. Holding requires positive evidence of headroom, so anything missing or unmeasurable vents rather than holds -- the opposite of the failure above. This deletes both broadcasters. The thermal battery and base_part_overclock are no longer patched at all, and the mod touches two parts instead of four. The launcher ammo signal stays; it is confirmed working in both directions. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011oLWY1G6S8U35bi2FxVWni
This commit is contained in:
@@ -7,16 +7,21 @@
|
||||
// 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.
|
||||
// The patches below add components to two vanilla parts -- the radiator, which
|
||||
// decides and acts, and the missile launcher, which reports whether thermal
|
||||
// ammunition is in use -- 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.
|
||||
//
|
||||
// The radiator measures the heat network's remaining room itself, so nothing
|
||||
// patches the thermal battery or the overclock base. Holding requires positive
|
||||
// evidence of headroom; anything missing or unmeasurable results in venting.
|
||||
//
|
||||
// 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
|
||||
Version = 2.1.0
|
||||
CompatibleGameVersions = ["0.30.4c", "0.30.4"]
|
||||
ModifiesGameplay = true
|
||||
Author = "Tobias Ganter"
|
||||
@@ -27,26 +32,16 @@ Description = "Radiators only vent surplus heat instead of running constantly.\n
|
||||
"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"\
|
||||
"your thermal batteries topped up as a deep missile reserve, and vent as the "\
|
||||
"network runs out of room.\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."
|
||||
"- Fail-safe: holding heat requires measured headroom on the network. If that "\
|
||||
"headroom runs low, or cannot be measured at all, radiators vent."
|
||||
|
||||
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
|
||||
@@ -54,13 +49,7 @@ Actions
|
||||
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 ---------------------------------------------------------
|
||||
|
||||
{
|
||||
@@ -82,9 +71,8 @@ Actions
|
||||
AddTo = "<ships/terran/radiator/radiator.rules>/Part/Components/Router/RouteGenerators/0/Routes"
|
||||
ManyToAdd
|
||||
[
|
||||
[NetworkedHeatBuffer, AutoRad_HoldSignal, 0]
|
||||
[NetworkedHeatBuffer, AutoRad_NetworkSpace, 0]
|
||||
[NetworkedHeatBuffer, AutoRad_ThermalAmmoSignal, 0]
|
||||
[NetworkedHeatBuffer, AutoRad_ForceVentSignal, 0]
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user