#!/usr/bin/env bash # #81/#45 FOUR-NODE CROSS-FIRE: real weapon kills, real attribution. # # No self-damage anywhere. All four pilots chase the nearest live peer # (BT_GOTO=enemy), hold at 150m, and fire in bursts (BT_AF_PERIOD throttles # BOTH the gun and missile groups -- unthrottled spam trips the documented # FailureHeat all-weapons brick and combat dies). Every death is a weapon # kill by another pilot, resolved cross-machine through the authentic path. # # Launched through bench_common.sh: every window is configured EXACTLY like a # player's shortcut (cockpit view, glass cockpit, MFDs) on an EXPERT egg, so # heat/crits/jams behave as they do in the field. # # PASS = matchlog KILL rows with killer != victim, panels mirror (SBMIRROR + # panel DRAW), every death START -> RESET, 0 SWALLOWED / 0 MISMATCH / # 0 DISCARDED / 0 GHOST / 0 crash. set -x . /c/git/bt411/scratchpad/night6/bench_common.sh cd /c/git/bt411/content || exit 1 bt_assert_player_env rm -f mp4c_a.log mp4c_b.log mp4c_c.log mp4c_d.log A=/c/git/bt411/scratchpad/night6/runs/$(date +%H%M%S); mkdir -p "$A"; mv matchlog_*.txt "$A"/ 2>/dev/null bt_expert_egg MP4.EGG MP4X.EGG PD=/c/git/bt411/scratchpad/night6/procdump.exe launch () { # $1=log $2=affinity $3=port BT_MP_LOG=1 BT_SCORE_LOG=1 BT_DEATH_LOG=1 BT_MATCHLOG=1 BT_TLOC_LOG=1 \ BT_GOTO=enemy BT_GOTO_STOP=150 BT_AUTOFIRE=1 BT_AF_MISSILE=1 BT_AF_PERIOD=7 \ bt_launch "$1" MP4X.EGG "$2" -net "$3" sleep 2 # crash net: full dump on any unhandled exception (a node died silently once) if [ -x "$PD" ]; then for pid in $(tasklist //FI "IMAGENAME eq btl4.exe" //NH 2>/dev/null | awk '{print $2}'); do [ -f "/c/git/bt411/scratchpad/night6/pd_$pid.txt" ] && continue "$PD" -accepteula -e -ma "$pid" \ "/c/git/bt411/scratchpad/night6/crash_$pid.dmp" \ > "/c/git/bt411/scratchpad/night6/pd_$pid.txt" 2>&1 & done fi } rm -f /c/git/bt411/scratchpad/night6/pd_*.txt /c/git/bt411/scratchpad/night6/crash_*.dmp launch mp4c_d.log 0xC0 1801 launch mp4c_c.log 0x30 1701 launch mp4c_b.log 0x0C 1601 launch mp4c_a.log 0x03 1501 sleep 5 python ../tools/btconsole.py MP4X.EGG 127.0.0.1:1501 127.0.0.1:1601 \ 127.0.0.1:1701 127.0.0.1:1801 & PC=$! sleep 480 kill $PC 2>/dev/null bt_kill_ours rm -f MP4X.EGG echo "=== DONE ==="