Files
firestorm/Gameleap/mw4/Content/Mechs/Hellspawn
e088555b96 Fix content defects found while decompiling V4H packages
Three unrelated source-data bugs surfaced while round-tripping our own
Content/Mechs tree against the decompiled V4H packages. All three were
found because a decompiler verifier disagreed with the shipped data, not
by inspection.

Hellspawn / Sunder: unterminated section headers
-------------------------------------------------
  hellspawn.subsystems:101   [HeatSink10  ->  [HeatSink10]
  sunder.subsystems:120      [HeatSink16  ->  [HeatSink16]

The notation parser keys a page on the bracketed name. With the closing
bracket missing the page name is malformed, so that heat sink's block is
not registered as its own page and its Model/ExecutionState/
InternalLocation keys are absorbed by the preceding page. Net effect: one
heat sink silently missing from each mech (Hellspawn LeftTorso, Sunder
LeftArm), and the preceding sink's location keys overwritten.

CauldronBorn: undefined macro in TwistRadius
--------------------------------------------
  cauldronborn.torso:15      TwistRadius=$(OBSTUSE_TRADIUS)  ->  100

OBSTUSE_TRADIUS is a typo and is defined nowhere in the define tables;
the intended symbol is OBTUSE_TRADIUS (=140). An undefined macro does not
fail loudly - the factory substitutes its own default - so this shipped
for years as a silent fallback.

Resolved to the literal 100 rather than $(OBTUSE_TRADIUS) because the
compiled .torso record in the shipped package holds 100.0f, i.e. the
factory default that has always been in effect. Using 140 would change
long-standing behaviour; 100 preserves it and makes it explicit. Verified
against the packaged record: verify_smallmodel now reports 1280/1280 keys.

Lesson recorded: an undefined macro is not a build error here. Check what
the compiled package actually holds before "correcting" a symbol name.

Co-authored-by: Claude Opus 5 (Anthropic) <noreply@anthropic.com>
Co-authored-by: GitHub Copilot <copilot@github.com>
2026-08-08 16:47:29 -05:00
..