Operator reports audited vs the binary (full matrix in RESPAWN_REARM_PLAN addendum): - VALVES (real gap): Condenser reset @004ae534 was missing from the decomp export -- raw disasm shows it chains HEATSINK (coolant refill runs; the old body chained HeatableSubsystem per the stale TCP shard) then, respawn- side, resets valveState to detent 1 and restores massScale from refrigerationFactor. Mech::Reset now also runs the binary's tail call (@0049f788 BTRecomputeCondenserValves) so flow fractions rebuild from the reset detents. Bench: detent 5 -> death -> "[respawn] Condenser1 valve detent 5 -> 1". - #129 SMOKE (real gap, peers-only): the replicant un-wreck edge rebuilt the model without the @004d0c14 per-entity effect cleanup, so the observer's last 10s wreck-plume window rode the teleport onto the fresh mech. BTStopEntityPfx now runs on the edge; bench shows no plume line after any un-wreck until the next death. - AUTHENTIC (no fix): weapon->generator taps persist (@004b0e6c only resolves the link) and MFD display/control modes persist (mapper vtables 0050f45c/0051e440 slots 8-11 = plain root bodies, read from the exe). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
38 lines
1.5 KiB
Bash
38 lines
1.5 KiB
Bash
#!/usr/bin/env bash
|
|
# RESPAWN-RESET VERIFY (2026-08-04 audit): valve detents + peer smoke.
|
|
# A (victim): BT_VALVE_TEST moves a coolant valve to detent 5 (~10s in);
|
|
# B (killer): BT_MP_FORCE_DMG kills A; A respawns (5s). PASS:
|
|
# A log: [valve] ... detent 5 then [respawn] ... valve detent 5 -> 1
|
|
# B log: [respawn] replicant un-wrecked with NO later "wreck smoke plume
|
|
# re-armed" for that entity until the next death;
|
|
# B captures: fresh A mech smoke-free after un-wreck.
|
|
set -x
|
|
. /c/git/bt411/scratchpad/night6/bench_common.sh
|
|
cd /c/git/bt411/content || exit 1
|
|
bt_assert_player_env
|
|
taskkill //F //IM btl4.exe > /dev/null 2>&1
|
|
sleep 2
|
|
rm -f rr_a.log rr_b.log rrB_*.png
|
|
bt_expert_egg MP.EGG RR.EGG
|
|
sed -i "s/^map=.*/map=grass/; s/^time=.*/time=day/; s/^vehicle=.*/vehicle=madcat/" RR.EGG
|
|
|
|
# A = victim: sets a valve, waits to die, logs the reset sweep.
|
|
BT_VALVE_TEST=1 BT_DEATH_LOG=1 BT_DMG_LOG=1 BT_MP_LOG=1 \
|
|
bt_launch rr_a.log RR.EGG 0x0C -net 1601
|
|
sleep 2
|
|
# B = killer: force-damages A's replicant; captures A's fresh spawn.
|
|
BT_MP_FORCE_DMG=1 BT_DEATH_LOG=1 BT_MP_LOG=1 \
|
|
BT_SHOT_EVERY=150 BT_SHOT_PREFIX=rrB \
|
|
bt_launch rr_b.log RR.EGG 0x03 -net 1501
|
|
sleep 5
|
|
python ../tools/btconsole.py RR.EGG 127.0.0.1:1501 127.0.0.1:1601 > rr_relay.log 2>&1 &
|
|
RELAY=$!
|
|
sleep 200
|
|
kill $RELAY 2>/dev/null
|
|
taskkill //F //IM btl4.exe > /dev/null 2>&1
|
|
sleep 3
|
|
echo "=== A valve + respawn lines:"
|
|
grep -E "\[valve\]|\[respawn\]" rr_a.log | head -12
|
|
echo "=== B un-wreck + smoke lines:"
|
|
grep -E "un-wrecked|plume" rr_b.log | head -12
|