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
118 lines
4.5 KiB
Plaintext
118 lines
4.5 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 one vanilla part, the radiator, and
|
|
// repoint its 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's own on/off switch picks the
|
|
// mode: ON vents constantly (vanilla), OFF banks heat and vents only when the
|
|
// network is nearly full.
|
|
//
|
|
// The radiator measures the heat network's remaining room itself, so no other
|
|
// part is patched. Idling 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 = 4.0.0
|
|
CompatibleGameVersions = ["0.30.4c", "0.30.4"]
|
|
ModifiesGameplay = true
|
|
Author = "Tobias Ganter"
|
|
|
|
Description = "Radiators switched OFF bank heat and vent only when the ship's heat storage is nearly full.\n\n"\
|
|
"Thermal Canister Missiles are built from your ship's own heat, and in vanilla "\
|
|
"your radiators compete with your launchers for it. With this mod the radiator's "\
|
|
"on/off switch picks a mode:\n\n"\
|
|
"- ON: vanilla. Vents constantly, the heat is gone.\n\n"\
|
|
"- OFF: banks heat as a deep missile reserve. The radiator idles while the heat "\
|
|
"network has room and vents as it approaches full, so the ship never overflows "\
|
|
"heat onto its own parts. An OFF radiator also frees its crew.\n\n"\
|
|
"- Fail-safe: idling requires measured headroom on the network. If that runs low, "\
|
|
"or cannot be measured at all, radiators vent."
|
|
|
|
Actions
|
|
[
|
|
// --- Receiver ---------------------------------------------------------
|
|
|
|
{
|
|
Action = AddBase
|
|
AddBaseTo = "<ships/terran/radiator/radiator.rules>/Part/Components"
|
|
BaseToAdd = &<components/radiator_auto.rules>
|
|
}
|
|
|
|
// --- Attach the radiator's network reader ----------------------------
|
|
//
|
|
// 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 this entry the reader is inert, reads 0, and the radiator vents
|
|
// permanently.
|
|
{
|
|
Action = AddMany
|
|
AddTo = "<ships/terran/radiator/radiator.rules>/Part/Components/Router/RouteGenerators/0/Routes"
|
|
ManyToAdd
|
|
[
|
|
[NetworkedHeatBuffer, AutoRad_NetworkSpace, 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
|
|
}
|
|
}
|
|
]
|