#!/usr/bin/env bash # CROSS-POD damage verification for the #95 cluster-burst change. # # WHY: projectile damage no longer goes through the shooter's # SubsystemMessageManager -- it now Dispatches DIRECTLY at the struck entity, as # the binary's Missile does (FUN_004be078). Dispatch is documented to reroute # cross-pod for a REPLICANT victim on its own, but the manager routing that used # to carry it is gone, so this must be proven on two real nodes rather than # assumed. # # Two pilots chase each other and fire in throttled bursts (unthrottled spam # trips the FailureHeat all-weapons brick and combat dies). # # PASS, read on the VICTIM's log (the node that did NOT fire the round): # * [dmghit] type=2 rows appear at all -> cross-pod damage arrives # * those rows carry burst > 1 -> the cluster count SURVIVED # the wire (this is the whole # point: the manager used to # drop it) # * their damageLevel actually climbs -> armour is really applied # Plus: no crash, and matchlog PROJ rows on the shooter pair with DMG on victim. set -x . /c/git/bt411/scratchpad/night6/bench_common.sh cd /c/git/bt411/content || exit 1 bt_assert_player_env rm -f mpb_a.log mpb_b.log bt_expert_egg MP.EGG MPB.EGG launch () { # $1=log $2=affinity $3=port BT_MP_LOG=1 BT_DMG_LOG=1 BT_MATCHLOG=1 BT_PROJ_LOG=1 BT_DEATH_LOG=1 \ BT_GOTO=enemy BT_GOTO_STOP=120 BT_AUTOFIRE=1 BT_AF_MISSILE=1 BT_AF_PERIOD=6 \ bt_launch "$1" MPB.EGG "$2" -net "$3" sleep 2 } launch mpb_b.log 0x0C 1601 launch mpb_a.log 0x03 1501 sleep 5 python ../tools/btconsole.py MPB.EGG 127.0.0.1:1501 127.0.0.1:1601 & PC=$! sleep 240 kill $PC 2>/dev/null bt_kill_ours rm -f MPB.EGG echo "=== DONE -- analyse with mp_burst.py ==="