feat: v4.0.0 -- radiator switch picks the mode, ammo gate removed
ON vents constantly (vanilla). OFF banks heat and vents only when the network is nearly full. The gate is now PowerToggle OR MustVent. The launcher's thermal-ammo broadcast is gone: it did not follow the ammo selection live, and the switch states the player's intent directly. Only the radiator is patched now. New test_gate_is_power_or_must_vent pins the semantics. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011oLWY1G6S8U35bi2FxVWni
This commit is contained in:
@@ -65,23 +65,23 @@ overflow continuously and no threshold value saves you.
|
||||
|
||||
## What the mod does
|
||||
|
||||
A radiator vents when **either**:
|
||||
The radiator's own on/off switch picks a mode:
|
||||
|
||||
1. **The heat network is running out of room.** The radiator measures this
|
||||
itself, with a bare `NetworkResourceInput` — the same component an
|
||||
overclocked part pushes its heat through (`base_part_overclock.rules`:
|
||||
`NetworkHeatInput`), so it sees exactly what a producer sees. Vent while
|
||||
less than **5%** of the network's heat storage is free, hold again once
|
||||
**10%** is free — a deadband so radiators do not chatter. Both numbers are
|
||||
named constants at the top of `components/radiator_auto.rules`.
|
||||
2. **No launcher on the network is set to Thermal Canister Missiles.** If you
|
||||
are not spending heat as ammunition there is nothing to hoard, so radiators
|
||||
behave exactly as in vanilla.
|
||||
- **ON** — vanilla. The radiator vents constantly. You want the heat gone.
|
||||
- **OFF** — bank heat. The radiator idles while the heat network has room and
|
||||
vents only when it is nearly full: vent while less than **5%** of the
|
||||
network's heat storage is free, hold again once **10%** is free (a deadband
|
||||
so radiators do not chatter). The ship never overflows heat onto its own
|
||||
parts, and thermal batteries stay topped up as a deep missile reserve. An
|
||||
OFF radiator also releases its crew.
|
||||
|
||||
Your manual radiator on/off switch still overrides both. The automation can only
|
||||
idle a radiator you have left switched on.
|
||||
The radiator measures the network itself, with a bare `NetworkResourceInput`
|
||||
— the same component an overclocked part pushes its heat through
|
||||
(`base_part_overclock.rules`: `NetworkHeatInput`), so it sees exactly what a
|
||||
producer sees. Both thresholds are named constants in
|
||||
`components/radiator_auto.rules`.
|
||||
|
||||
The design is **fail-safe**: holding heat requires positive evidence that the
|
||||
The design is **fail-safe**: idling requires positive evidence that the
|
||||
network has room to spare. Anything missing, disconnected or unmeasurable ends
|
||||
up venting, which is vanilla behaviour.
|
||||
|
||||
@@ -97,8 +97,7 @@ No stat or number is changed. Only *when* radiators run.
|
||||
|
||||
```
|
||||
mod.rules manifest + patch actions
|
||||
components/radiator_auto.rules measures network headroom, decides, acts
|
||||
components/launcher_ammo_signal.rules reports thermal ammo in use
|
||||
components/radiator_auto.rules measures network headroom, gates the radiator
|
||||
tests/ offline validation suite
|
||||
tools/dotnet_enum.py reads component schemas out of Cosmoteer.dll
|
||||
tools/ildump.py disassembles component methods to readable CIL
|
||||
@@ -134,25 +133,25 @@ for the schema checks.
|
||||
|
||||
## How to tell it is working
|
||||
|
||||
There is no separate "auto" mode and nothing to reset. The radiator's on/off
|
||||
switch is an AND gate:
|
||||
Switch a radiator **OFF** with heat storage low. It shows the "powered off"
|
||||
indicator and no steam plume while the network fills. As the heat gauge nears
|
||||
full the plume starts and the gauge stalls around 90–95%, with no overheat
|
||||
warning. Fire missiles, the gauge drops, the radiator goes quiet again.
|
||||
|
||||
- switch **off** -> radiator is off, and stays off. The mod never turns it back on.
|
||||
- switch **on** -> the automation decides, moment to moment.
|
||||
|
||||
An auto-idled radiator shows the "powered off" indicator icon and stops emitting
|
||||
its steam plume. That icon on a radiator you did *not* switch off is the mod
|
||||
holding heat back for your launchers.
|
||||
Switch it **ON** and it runs constantly, exactly as in vanilla.
|
||||
|
||||
## Status
|
||||
|
||||
**Unconfirmed.** Against game data 0.30.4c, as of 2026-08-29:
|
||||
**Release path confirmed, switch semantics not yet.** Against game 0.30.4c on
|
||||
2026-08-29, v3.0.0 in a real fight: radiators idled while the network filled,
|
||||
vented as it neared full, the ship never overheated, and they went quiet again
|
||||
once missiles drained the reserve.
|
||||
|
||||
- Confirmed in game: the gate closes and idles a radiator when thermal ammo is
|
||||
in use, and with no launcher on thermal ammo behaviour is vanilla.
|
||||
- **Not yet confirmed: the release path** — that radiators start venting as the
|
||||
network fills. v3.0.0 is the first build whose threshold is on the right
|
||||
scale, and it has not been played yet.
|
||||
v4.0.0 changed only the gate: earlier builds required a launcher to broadcast
|
||||
"thermal ammo in use" over the heat network, which worked at load but did not
|
||||
follow the ammo selection live. The player's switch expresses the intent more
|
||||
directly, so the broadcast was removed and OFF now means "bank heat". That
|
||||
switch behaviour is the one thing v4.0.0 has not been played with yet.
|
||||
|
||||
### What the assembly says
|
||||
|
||||
@@ -223,6 +222,7 @@ debugging again.
|
||||
|
||||
## Possible additions
|
||||
|
||||
- A per-radiator UI toggle for auto/manual, which needs a new `ChoiceID` wired
|
||||
into `Data/gui/game/parts/part_toggles.rules`.
|
||||
- A third switch position (ON / BANK / OFF) so a radiator can be fully
|
||||
disabled, which needs a new `ChoiceID` wired into
|
||||
`Data/gui/game/parts/part_toggles.rules`.
|
||||
- Exposing the 5% / 10% band in the game UI rather than as file constants.
|
||||
|
||||
Reference in New Issue
Block a user