#!/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