#!/usr/bin/env bash # #82 FOUR-NODE LIMP VERIFICATION: do peers see a gimped mech step-drag, or skate? # # Node A gimps a LEG ~2s after it is alive (BT_SELF_DAMAGE_ZONE=leg resolves the # zone symbolically -- numeric ids are per-mech-type) and circles slowly in its # own spawn area from the first second. B/C/D are PLAIN observers: no # automation, full keyboard control, parked at spawn. Drive one over and look. # # Launched through bench_common.sh, so every window is configured EXACTLY like # a player's shortcut -- COCKPIT view, glass cockpit, MFDs. # # ⚠ THE ONE DELIBERATE DIVERGENCE: this bench flies a NOVICE egg. On expert the # self-damage bursts roll CRITS on the aimed leg and one myomers crit leaves the # mech turning-but-not-moving, which destroys the limp. Crits/heat/jams are # therefore OFF here -- do not read damage behaviour off this bench. # # USER CHECK: the limping mech must STEP-DRAG, never glide/skate. # LOG CHECK: [animind] inst=1 entering gait states 22-27 on the observers. set -x . /c/git/bt411/scratchpad/night6/bench_common.sh cd /c/git/bt411/content || exit 1 bt_assert_player_env rm -f mp4l_a.log mp4l_b.log mp4l_c.log mp4l_d.log A=/c/git/bt411/scratchpad/night6/runs/$(date +%H%M%S); mkdir -p "$A"; mv matchlog_*.txt "$A"/ 2>/dev/null bt_novice_egg MP4L.EGG MP4LN.EGG observer () { # $1=log $2=affinity $3=port # STATIC + fully controllable from frame one. NO autopilot: BT_GOTO's # handover is broken (after BT_GOTO_RELEASE the mech reads throttle 0 yet # keeps advancing ~40u/s -- the control-mapper demand freezes instead of # following the keyboard), so a released mech walks straight past whatever # it was sent to watch. Map is arena1, the tightest-spawning map measured # (pairwise 41-1055u vs grass ~1200u); the limper is the WHITE Black Hawk. BT_MP_LOG=1 BT_SYNC_LOG=1 BT_REPL_LOG=1 BT_MATCHLOG=1 BT_AUDIO_SPATIAL=1 BT_SCORE_LOG=1 BT_DEATH_LOG=1 BT_TLOC_LOG=1 \ bt_launch "$1" MP4LN.EGG "$2" -net "$3" } observer mp4l_d.log 0xC0 1801 sleep 1 observer mp4l_c.log 0x30 1701 sleep 1 observer mp4l_b.log 0x0C 1601 sleep 1 # the LIMPER: symbolic leg zone, 2 ticks of 60 -> gimp (no kill) ~2s after # alive; slow tight circle from t0 so it never leaves its spawn area. BT_MP_LOG=1 BT_DMG_LOG=1 BT_MATCHLOG=1 BT_AUDIO_SPATIAL=1 BT_SCORE_LOG=1 BT_DEATH_LOG=1 BT_TLOC_LOG=1 \ BT_SELF_DAMAGE=60 BT_SELF_DAMAGE_ZONE=leg BT_SELF_DAMAGE_TICKS=2 BT_SELF_DAMAGE_DELAY=2 \ BT_AUTODRIVE=0.4 BT_FORCE_TURN=0.45 \ bt_launch mp4l_a.log MP4LN.EGG 0x03 -net 1501 sleep 5 python ../tools/btconsole.py MP4LN.EGG 127.0.0.1:1501 127.0.0.1:1601 \ 127.0.0.1:1701 127.0.0.1:1801 & PC=$! sleep 660 kill $PC 2>/dev/null bt_kill_ours rm -f MP4LN.EGG echo "=== DONE ==="