Files
firestorm/Gameleap/mw4/Content/Mechs/Hellspawn/hellspawn.subsystems
T
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

157 lines
3.5 KiB
Plaintext

[Engine]
Model=hellspawn.engine
ExecutionState=NeverExecuteState
InternalLocation=CenterTorso
EngineUpgrades=7
[Armor]
Model=Subsystems\Armor.data
ExecutionState=NeverExecuteState
InternalLocation=CenterTorso
ArmorType=Standard
InternalType=Standard
LeftArm=0.5
RightArm=0.5
LeftLeg=0.8
RightLeg=0.8
LeftFrontTorso=0.85
RightFrontTorso=0.85
CenterFrontTorso=1.15
CenterRearTorso=0.5
Head=0.3
[AdvancedGyro]
Model=Subsystems\AdvancedGyroSubsystem.data
ExecutionState=NeverExecuteState
InternalLocation=CenterTorso
[Sensor]
Model=Subsystems\SensorSubsystem.data
ExecutionState=ActiveState
InternalLocation=Head
[Torso]
Model=Hellspawn.torso
ExecutionState=AlwaysExecuteState
InternalLocation=CenterTorso
[SearchLight]
Model=Subsystems\SearchLightSubsystem.data
ExecutionState=AlwaysExecuteState
CriticalHitsTaken=1
Site=site_light
InternalLocation=CenterTorso
[JumpJet]
Model=Subsystems\JumpJetSubsystem.data
ExecutionState=NeverExecuteState
InternalLocation=CenterTorso
CriticalHitsTaken=0
[ECM]
Model=Subsystems\ECMSubsystem.data
ExecutionState=NeverExecuteState
InternalLocation=Head
[HeatSink1]
Model=Subsystems\HeatSinkSubsystem.data
ExecutionState=NeverExecuteState
InternalLocation=LeftTorso
[HeatSink2]
Model=Subsystems\HeatSinkSubsystem.data
ExecutionState=NeverExecuteState
InternalLocation=CenterTorso
[HeatSink3]
Model=Subsystems\HeatSinkSubsystem.data
ExecutionState=NeverExecuteState
InternalLocation=RightTorso
[HeatSink4]
Model=Subsystems\HeatSinkSubsystem.data
ExecutionState=NeverExecuteState
InternalLocation=LeftTorso
[HeatSink5]
Model=Subsystems\HeatSinkSubsystem.data
ExecutionState=NeverExecuteState
InternalLocation=CenterTorso
[HeatSink6]
Model=Subsystems\HeatSinkSubsystem.data
ExecutionState=NeverExecuteState
InternalLocation=RightTorso
[HeatSink7]
Model=Subsystems\HeatSinkSubsystem.data
ExecutionState=NeverExecuteState
InternalLocation=LeftTorso
[HeatSink8]
Model=Subsystems\HeatSinkSubsystem.data
ExecutionState=NeverExecuteState
InternalLocation=CenterTorso
[HeatSink9]
Model=Subsystems\HeatSinkSubsystem.data
ExecutionState=NeverExecuteState
InternalLocation=RightTorso
[HeatSink10]
Model=Subsystems\HeatSinkSubsystem.data
ExecutionState=NeverExecuteState
InternalLocation=LeftTorso
[Beam1]
Model=WeaponSubsystems\PulseLaserWeaponSubsystem\MediumPulseLaser.data
ExecutionState=NeverExecuteState
CriticalHitsTaken=1
Site=site_ldgunport
GroupIndex=1
InternalLocation=LeftArm
[Beam2]
Model=WeaponSubsystems\PulseLaserWeaponSubsystem\MediumPulseLaser.data
ExecutionState=NeverExecuteState
CriticalHitsTaken=1
Site=site_ldgunport
GroupIndex=1
InternalLocation=LeftArm
[Beam3]
Model=WeaponSubsystems\PulseLaserWeaponSubsystem\LargePulseLaser.data
ExecutionState=NeverExecuteState
CriticalHitsTaken=1
Site=site_ldgunport
GroupIndex=1
InternalLocation=LeftArm
[Missil1]
Model=WeaponSubsystems\SSRMWeaponSubsystem\SSRM2.data
ExecutionState=NeverExecuteState
CriticalHitsTaken=1
Site=site_rdgunport
GroupIndex=2
InternalLocation=RightArm
AmmoCount=50
[Missile2]
Model=WeaponSubsystems\SSRMWeaponSubsystem\SSRM2.data
ExecutionState=NeverExecuteState
CriticalHitsTaken=1
Site=site_rmissileport
GroupIndex=2
InternalLocation=Special1
AmmoCount=50
[Missile3]
Model=WeaponSubsystems\LRMWeaponSubsystem\LRM10.data
ExecutionState=NeverExecuteState
CriticalHitsTaken=1
Site=site_lmissileport
GroupIndex=2
InternalLocation=LeftTorso
AmmoCount=24