diff --git a/game/reconstructed/heat.cpp b/game/reconstructed/heat.cpp index 7bf5e0b..6ae5a10 100644 --- a/game/reconstructed/heat.cpp +++ b/game/reconstructed/heat.cpp @@ -553,6 +553,10 @@ HeatSink::HeatSink( // identical on every chassis (6 condensers, 1 bank, 1 reservoir), so if // per-mech cooling variation exists it must live in these authored values. // Dump them so that is a measured fact rather than an assumption. + // ⚠ These are the RESOURCE values BEFORE any ctor scaling. The bank + // (AggregateHeatSink) multiplies conductance by 0.1 x HeatSinkCount right + // after this -- comparing chassis on THIS line alone mis-read the Owens and + // Thor banks as identical (they are 115.5k vs 300.3k scaled; #96). if (getenv("BT_MYO_LOG")) DEBUG_STREAM << "[hsparm] " << (GetName() ? GetName() : "?") << " startT=" << startingTemperature @@ -797,7 +801,25 @@ void } pendingHeat = 0.0f; - ConductHeat(time_slice); // FUN_004ad8ac + // #96 dissipation audit: a 2s census of the chain -- prints from the SIM + // tick (not the exchange) so the TERMINUS bank, which has no link and never + // exchanges, is visible too. Gated: BT_HEAT_LOG. + if (getenv("BT_HEAT_LOG")) + { + static unsigned long s_hcAt = 0; + unsigned long now_ms = GetTickCount(); + if (now_ms - s_hcAt > 2000) + s_hcAt = now_ms; + if (now_ms - s_hcAt < 40 && GetName() != 0) + DEBUG_STREAM << "[heatflow] " << GetName() + << " T=" << currentTemperature + << " E=" << heatEnergy + << " pend=" << pendingHeat + << " cool=" << coolantLevel << "/" << thermalCapacity + << " flowScale=" << coolantFlowScale + << " mScale=" << massScale << std::endl; + } + ConductHeat(time_slice); // FUN_004ad8ac } if (HeatModelActive()) diff --git a/game/reconstructed/heatfamily_reslice.cpp b/game/reconstructed/heatfamily_reslice.cpp index a406697..e295c4a 100644 --- a/game/reconstructed/heatfamily_reslice.cpp +++ b/game/reconstructed/heatfamily_reslice.cpp @@ -1211,6 +1211,26 @@ void { if (HeatModelActive()) // FUN_004ad7d4 { + // #96 dissipation audit: the bank runs THIS Performance, not the base + // HeatSinkSimulation, so the [heatflow] census there never saw it. + // Same census here, tagged RADIATOR -- if this line never prints, the + // mech has NO ambient heat exit and everything cooks. + if (getenv("BT_HEAT_LOG")) + { + static unsigned long s_rcAt = 0; + unsigned long now_ms = GetTickCount(); + if (now_ms - s_rcAt > 2000) + { + s_rcAt = now_ms; + DEBUG_STREAM << "[heatflow] RADIATOR '" << (GetName() ? GetName() : "?") + << "' T=" << currentTemperature + << " E=" << heatEnergy + << " pend=" << pendingHeat + << " k=" << thermalConductance + << " cool=" << coolantLevel << "/" << thermalCapacity + << std::endl; + } + } heatEnergy += pendingHeat; // [0x56] += [0x72] currentTemperature = heatEnergy / thermalMass; // [0x45] = [0x56]/[0x55] UpdateHeatLoad(); // FUN_004ad7f0