DotNet.Ships.Class.Heat - Elite-Dangerous-Almanac/Almanac-Core GitHub Wiki
EliteDangerousAlmanac / Ships / Heat
Defined in: dotnet/src/EliteDangerousAlmanac/Ships/Heat.cs:159
What a build runs at, and whether firing everything cooks it.
A ship's heat is a balance. The power plant turns the draw of everything it feeds into waste heat, the thrusters and the frame shift drive add their own, and the weapons add theirs while they fire. The hull sheds heat as it gets hotter, in proportion to the square of its heat level, and stops shedding any more at heat level one.
Two consequences follow, and they are what the figures mean. A build whose thermal load stays under the hull's dissipation always settles below heat level one and never overheats, however long it holds the trigger. One whose load goes over it never settles: heat climbs until the ship cooks, and the only question is how long that takes. The heat capacity decides that timing and nothing else. It is thermal inertia, not a budget.
Two heat sources stand outside the scenarios reported here, both momentary rather than sustained. A shield cell bank states its heat per activation rather than per second: divide it by the bank's spin-up to get a load these members accept. A heat sink removes heat rather than making it, and every load here is zero or more, so nothing here models a sink. The level a sink drops the ship to is the starting level of whatever comes after it.
Reference implementation: EDSY, edsy.js, which cites the Frontier-forum research thread the model was reverse-engineered in. Frontier publishes no heat formula and shows a player no dissipation figure, so both the model and the per-hull dissipation it reads are community measurements of the game rather than stats the game states. See data/ships/SOURCES.md and ATTRIBUTIONS.md.
constOverheatHeatLevel:double=1.5
Defined in: dotnet/src/EliteDangerousAlmanac/Ships/Heat.cs:166
The heat level the cockpit gauge shows as a full gauge, where a ship starts to cook.
Heat level one is where the hull's dissipation stops rising, and the gauge reads two thirds there.
staticEffectiveWeaponThermalLoad(thermalLoad,distributorDraw,weaponsCapacity,capacitorLevel):double
Defined in: dotnet/src/EliteDangerousAlmanac/Ships/Heat.cs:207
A weapon's thermal load once the weapons capacitor's state is folded in.
double
The weapon's thermal load, in the game's units.
double
The weapons-capacitor draw of one discharge, in megajoules.
double
The distributor's weapons-capacitor capacity, in megajoules.
double
How full the capacitor is, from empty at zero through full at one.
double
The effective thermal load, between the stated load and five times it.
A shot the capacitor cannot pay for in full generates up to five times its listed thermal load. This is why a build that never overheats in a duel can cook itself in a wing fight, firing the same guns on an empty capacitor.
ArgumentOutOfRangeException
An argument is not a finite number of zero or more, or the capacitor level is above one.
staticEquilibriumLevel(dissipation,thermalLoad):double
Defined in: dotnet/src/EliteDangerousAlmanac/Ships/Heat.cs:185
The heat level a thermal load settles at.
double
The hull's largest heat dissipation, per second.
double
The load being shed, per second.
double
The settled heat level, in model units. A load above the dissipation answers a level above one, which the ship never actually reaches as a resting point: it passes through and keeps climbing.
ArgumentOutOfRangeException
An argument is not a finite number of zero or more.
staticLevelAtTime(heatCapacity,heatDissipation,thermalLoad,startLevel,seconds):double
Defined in: dotnet/src/EliteDangerousAlmanac/Ships/Heat.cs:241
The heat level a build reaches after holding a thermal load for a while.
double
The hull's heat capacity, which must be above zero.
double
The hull's largest heat dissipation, per second.
double
The thermal load being generated, per second.
double
The heat level the ship starts at.
double
How long the load is held, in seconds.
double
The heat level after the time, in model units.
ArgumentOutOfRangeException
A figure is not a finite number of zero or more, or the heat capacity is zero.
staticMetrics(input):HeatMetrics
Defined in: dotnet/src/EliteDangerousAlmanac/Ships/Heat.cs:347
Everything an outfitting screen shows about a build's heat: what it idles at, what it runs at flying and jumping, and whether firing everything cooks it.
The hull's two heat stats, the plant's efficiency and the build's draw.
The build's heat metrics.
ArgumentNullException
input is null.
ArgumentOutOfRangeException
A figure is not a finite number of zero or more, or the heat capacity is zero.
staticSecondsToLevel(heatCapacity,heatDissipation,thermalLoad,startLevel,targetLevel):double
Defined in: dotnet/src/EliteDangerousAlmanac/Ships/Heat.cs:291
How long a build takes to move from one heat level to another under a given load, heating or cooling.
double
The hull's heat capacity, which must be above zero.
double
The hull's largest heat dissipation, per second.
double
The thermal load being generated, per second.
double
The heat level the ship starts at.
double
The heat level being asked about.
double
The seconds it takes, or infinity when the load never carries the ship there: heating towards a level at or beyond where it settles, or cooling towards one below it.
ArgumentOutOfRangeException
A figure is not a finite number of zero or more, or the heat capacity is zero.