The byte-exact WORLD-ENTITY reconstruction (Projectile @4be1bc 0x340 / Missile @4bf5b4 0x368)
is infeasible on the 2007 engine: measured sizeof(engine Entity)=0x1BC vs the 1995 binary's
0x300, so the reconstruction's raw base-offset reads (velocity@0x1dc, roster@0x124, motion@0x250)
read GARBAGE on the engine (the Mech 0x638-vs-0x854 gap, but the entity integrator DEPENDS on
those offsets). So -- like the mech drive and the beam renderer -- flying projectiles are a PORT
reconstruction (BTPushProjectile/BTUpdateProjectiles in mech4.cpp, a static array + stack
messages, ZERO heap ops): seeded from the launcher's fire with the decomp's real muzzle
(GetMuzzlePoint) / launch speed (|launchVelocity|) / per-shot damage (damageData, split across
missileCount), they fly to the target (tracer via BTPushBeam) and deliver the weapon's damage on
impact through the SAME Entity::TakeDamage path as the beam (aim Mech::FirstVitalZone()).
THREE bring-up fixes were needed to make a projectile weapon fire at all (found by tracing):
1. TRIGGER: fireImpulse was only driven for the Emitter; ProjectileWeaponSimulation now sets
fireImpulse = gBTWeaponTrigger too (else CheckFireEdge never sees an edge).
2. AMMO BIN: OwnerSubsystemCount/OwnerSubsystem were stubbed ->0, so ammoBinLink never resolved
and ConsumeRound always failed; redirected to the real roster (owner->GetSubsystemCount()/
GetSubsystem(i) -- the AmmoBin 0xBCB constructs before the weapons 0xBCD/0xBD0).
3. JAM ROLL: UniformRandom() was stubbed `return 0.0f`, so CheckForJam's `0 < jamChance` ALWAYS
jammed (a projectile weapon could NEVER fire); replaced with a real LCG [0,1) (fires
~1-jamChance of the time -- authentic occasional jams).
Also: the mech's own target slot (owner+0x388) isn't populated in bring-up (the visible fire
targets the gEnemyMech global), so BTPushProjectile falls back to gEnemyMech.
Verified: Mad Cat PUSH=62 / IMPACT=31 (LRM missiles 3.33 dmg each split across the salvo + AFC100
autocannon 25 dmg), TARGET DESTROYED, 0 crashes, construction heapcheck-clean; BLH un-regressed
(also fires its ballistic weapon now). Diagnostics BT_PROJ_LOG ([projectile] PUSH/IMPACT).
REMAINING (deferred): the byte-exact world-entity Missile (Projectile : Mover, MP-replicable via
Registry::MakeEntity) -- the port projectile is master-local only (no MP replication); the real
per-weapon fire-rate/heat wiring off the subsystem sim (mech4 beam path is still the bring-up harness).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
230 lines
7.4 KiB
Plaintext
230 lines
7.4 KiB
Plaintext
[mission]
|
|
adventure=BattleTech
|
|
map=grass
|
|
scenario=freeforall
|
|
time=day
|
|
weather=clear
|
|
temperature=27
|
|
length=600
|
|
[ordinals]
|
|
bitmap=Ordinal::BitMap::1
|
|
bitmap=Ordinal::BitMap::2
|
|
bitmap=Ordinal::BitMap::3
|
|
bitmap=Ordinal::BitMap::4
|
|
[Ordinal::BitMap::1]
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=000038000003C000001FF00000000F00
|
|
bitmap=0000F8000003C000003FF80000000F00
|
|
bitmap=0001F8000003C00000707C0000000F00
|
|
bitmap=0001F8000003C00000603C0000000F00
|
|
bitmap=00007801FC0FF00000003C3DF807FF00
|
|
bitmap=00007803FE0FF00000003C3FFC0FFF00
|
|
bitmap=00007803C703C00000003C3E3C1F0F00
|
|
bitmap=000078078303C0000000783C1E1E0F00
|
|
bitmap=000078078003C0000000783C1E1E0F00
|
|
bitmap=00007807C003C0000000F03C1E1E0F00
|
|
bitmap=00007807F003C0000001E03C1E1E0F00
|
|
bitmap=00007803FC03C0000003C03C1E1E0F00
|
|
bitmap=00007801FE03C0000007803C1E1E0F00
|
|
bitmap=000078007F03C000000F003C1E1E0F00
|
|
bitmap=000078001F03C000001E003C1E1E0F00
|
|
bitmap=000078000F03C000003C003C1E1E0F00
|
|
bitmap=000078060F03C0000078003C1E1E0F00
|
|
bitmap=000078071E03E0000078003C1E1F1F00
|
|
bitmap=00007803FE01F000007FFC3C1E0FFF00
|
|
bitmap=00007801FC00F000007FFC3C1E07EF00
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
x=128
|
|
y=32
|
|
width=8
|
|
[Ordinal::BitMap::2]
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=001FFF0000003C0000003C03C0780000
|
|
bitmap=001FFF0000003C0000007C03C0780000
|
|
bitmap=00000E0000003C000000FC03C0780000
|
|
bitmap=00003C0000003C000001BC03C0780000
|
|
bitmap=0000700F3E1FFC000003BC0FF07BF000
|
|
bitmap=0001E00F7E3FFC0000073C0FF07FF800
|
|
bitmap=0003800FFE7C3C0000063C03C07C7800
|
|
bitmap=0007F80FFE783C00000C3C03C0783C00
|
|
bitmap=0007FE0F80783C0000183C03C0783C00
|
|
bitmap=00001E0F00783C0000383C03C0783C00
|
|
bitmap=00000F0F00783C0000703C03C0783C00
|
|
bitmap=00000F0F00783C00007FFF03C0783C00
|
|
bitmap=00000F0F00783C00007FFF03C0783C00
|
|
bitmap=00000F0F00783C0000003C03C0783C00
|
|
bitmap=00000F0F00783C0000003C03C0783C00
|
|
bitmap=00000F0F00783C0000003C03C0783C00
|
|
bitmap=00180F0F00783C0000003C03C0783C00
|
|
bitmap=001C1F0F007C7C0000003C03E0783C00
|
|
bitmap=000FFE0F003FFC0000003C01F0783C00
|
|
bitmap=0007FC0F001FBC0000003C00F0783C00
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
x=128
|
|
y=32
|
|
width=8
|
|
[Ordinal::BitMap::3]
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=001FFF03C07800000000FC03C0780000
|
|
bitmap=001FFF03C07800000003FC03C0780000
|
|
bitmap=001E0003C07800000007C003C0780000
|
|
bitmap=001E0003C0780000000F0003C0780000
|
|
bitmap=001E000FF07BF000000F000FF07BF000
|
|
bitmap=001E000FF07FF800001E000FF07FF800
|
|
bitmap=001E0003C07C7800001E0003C07C7800
|
|
bitmap=001FFC03C0783C00001EFC03C0783C00
|
|
bitmap=001FFE03C0783C00001FFE03C0783C00
|
|
bitmap=00001F03C0783C00001F1F03C0783C00
|
|
bitmap=00000F03C0783C00001E0F03C0783C00
|
|
bitmap=00000F03C0783C00001E0F03C0783C00
|
|
bitmap=00000F03C0783C00001E0F03C0783C00
|
|
bitmap=00000F03C0783C00001E0F03C0783C00
|
|
bitmap=00000F03C0783C00001E0F03C0783C00
|
|
bitmap=00000F03C0783C00001E0F03C0783C00
|
|
bitmap=00180F03C0783C00001E0F03C0783C00
|
|
bitmap=001C1F03E0783C00001F1F03E0783C00
|
|
bitmap=000FFE01F0783C00000FFE01F0783C00
|
|
bitmap=0007FC00F0783C000007FC00F0783C00
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
x=128
|
|
y=32
|
|
width=8
|
|
[Ordinal::BitMap::4]
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=001FFF03C07800000007FC03C0780000
|
|
bitmap=001FFF03C0780000000FFE03C0780000
|
|
bitmap=00000F03C0780000001F1F03C0780000
|
|
bitmap=00000F03C0780000001E0F03C0780000
|
|
bitmap=00000F0FF07BF000001E0F0FF07BF000
|
|
bitmap=00001F0FF07FF800001E0F0FF07FF800
|
|
bitmap=00001E03C07C7800001E0F03C07C7800
|
|
bitmap=00003E03C0783C00001E0F03C0783C00
|
|
bitmap=00003C03C0783C00000F1E03C0783C00
|
|
bitmap=00003C03C0783C000007FC03C0783C00
|
|
bitmap=00007803C0783C000007FC03C0783C00
|
|
bitmap=00007803C0783C00000F1E03C0783C00
|
|
bitmap=00007803C0783C00001E0F03C0783C00
|
|
bitmap=0000F003C0783C00001E0F03C0783C00
|
|
bitmap=0000F003C0783C00001E0F03C0783C00
|
|
bitmap=0000F003C0783C00001E0F03C0783C00
|
|
bitmap=0000F003C0783C00001E0F03C0783C00
|
|
bitmap=0000F003E0783C00000F1E03E0783C00
|
|
bitmap=0000F001F0783C00000FFE01F0783C00
|
|
bitmap=0000F000F0783C000007FC00F0783C00
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
x=128
|
|
y=32
|
|
width=8
|
|
[pilots]
|
|
pilot=200.0.0.96
|
|
[200.0.0.96]
|
|
hostType=0
|
|
advancedDamage=1
|
|
loadzones=1
|
|
name=Aeolus
|
|
bitmapindex=1
|
|
experience=expert
|
|
badge=VGL
|
|
patch=Yellow
|
|
role=Role::Default
|
|
dropzone=one
|
|
vehicle=madcat
|
|
vehicleValue=1000
|
|
color=White
|
|
[largebitmap]
|
|
bitmap=BitMap::Large::Aeolus
|
|
[BitMap::Large::Aeolus]
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=000003FE0000000001E0000000000000
|
|
bitmap=000007FF0000000001E0000000000000
|
|
bitmap=00000F8F8000000001E0000000000000
|
|
bitmap=00000F078000000001E0000000000000
|
|
bitmap=00000F0781FF00FF81E0F0781FC00000
|
|
bitmap=00000F0783FF81FFC1E0F0783FE00000
|
|
bitmap=00000F0787C7C3E3E1E0F0783C700000
|
|
bitmap=00000F078783C3C1E1E0F07878300000
|
|
bitmap=00000F078783C3C1E1E0F07878000000
|
|
bitmap=00000FFF8783C3C1E1E0F0787C000000
|
|
bitmap=00000FFF8783C3C1E1E0F0787F000000
|
|
bitmap=00000F0787FFC3C1E1E0F0783FC00000
|
|
bitmap=00000F0787FFC3C1E1E0F0781FE00000
|
|
bitmap=00000F07878003C1E1E0F07807F00000
|
|
bitmap=00000F07878003C1E1E0F07801F00000
|
|
bitmap=00000F07878003C1E1E0F07800F00000
|
|
bitmap=00000F078780C3C1E1E0F07860F00000
|
|
bitmap=00000F0787C1C3E3E1E078F871E00000
|
|
bitmap=00000F0783FF81FFC1E07FF83FE00000
|
|
bitmap=00000F0781FF00FF81E03F781FC00000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
x=128
|
|
y=32
|
|
width=8
|
|
[smallbitmap]
|
|
bitmap=BitMap::Small::Aeolus
|
|
[BitMap::Small::Aeolus]
|
|
bitmap=00000000000000000000000000000000
|
|
bitmap=0000000000000000003E00000C000000
|
|
bitmap=006300000C00000000631F0F8CC63C00
|
|
bitmap=00633198CCC66200007F3198CCC66000
|
|
bitmap=00633F98CCC6780000633018CCC61E00
|
|
bitmap=00633018CCC6060000633098CCC64600
|
|
bitmap=00631F0F8C7E3C000000000000000000
|
|
bitmap=00000000000000000000000000000000
|
|
x=64
|
|
y=16
|
|
width=4
|
|
[Role::Default]
|
|
model=dfltrole
|
|
[Role::NoReturn]
|
|
model=noretun
|