diff --git a/crates/helm-bv/UPSTREAM.md b/crates/helm-bv/UPSTREAM.md index ba00815..407e967 100644 --- a/crates/helm-bv/UPSTREAM.md +++ b/crates/helm-bv/UPSTREAM.md @@ -120,3 +120,41 @@ rules; correcting it upstream would change those five battle values. `slot < entity.locations()`, which is the number of locations rather than the number of critical slots in one. A Mek arm has twelve slots and the loop checks eight, so a blade mounted low in an arm is not found at all. + +## An IndustrialMek that is not ICE-powered still generates movement heat + +TechManual gives the heat efficiency of a Mek as `6 + heat sink capacity - +movement heat`, and says that *ICE-powered* IndustrialMeks generate no heat +when moving and so have a movement heat of 0. MegaMek gives 0 to every +IndustrialMek, whatever drives it, and helm reproduces that. + +The book's own worked example is the disagreement: a WI-DM DemolitionMech has +a Fuel Cell engine rather than an ICE, and the example computes +`6 + 1 - 2 = 5`, charging it the two points for running. MegaMek and helm both +make it 7. + +104 of the 180 IndustrialMeks in 0.51.0 are not ICE-powered, so this is not a +one-design curiosity - but it cannot change an answer in practice. An +IndustrialMek gets ten free heat sinks and rarely carries enough weaponry to +generate ten points of heat, so its total weapon heat sits below both figures +and the budget never binds. It would take a design whose heat falls between +the two, and the library has none. + +Recorded rather than fixed, because conformance here is with MegaMek. If +MegaMek changes, helm follows, and this note is what will explain why the +answers moved. + +## The Watchdog's offensive value is unreachable + +`BVCalculator.processOffensiveEquipment` skips `F_ECM` equipment unless it is +also `F_WATCHDOG`, and further down sets `bv = 7` for a Watchdog - an +exception written to let one ECM suite through and score it. It never runs. + +The same condition that lets the Watchdog past the `F_ECM` test also skips +anything whose `offensiveEquipmentBV` is zero, and a Watchdog's is. The +exception is dead code. + +helm reproduces the behaviour rather than the intent: scoring the Watchdog at +7 as written costs twenty-one designs. Whether the intent or the behaviour is +right is a question for MegaMek; the answers are what conformance is measured +against, so the answers are what helm follows.