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>
157 lines
3.5 KiB
Plaintext
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
|
|
|