Files
BT411/scratchpad/night8/mp_burst.sh
T
Joe DiPrimaandClaude Opus 5 3a22c334ac bench: two-node CROSS-POD damage verification for the #95 burst change
Projectile damage now Dispatches directly at the victim instead of going through
the shooter's SubsystemMessageManager, so cross-pod delivery had to be proven on
real nodes rather than assumed.

RESULT: cross-pod delivery intact, and the cluster count survives the wire.
Node A fired 38 missile rounds with bursts {1:5,2:6,3:6,4:7,5:7,6:7}; node B
received exactly the matching zone applications {2:12,3:18,4:28,5:35,6:42} --
i.e. rounds x burst, per burst band, exact.  135 of B's 142 explosive
applications carried burst > 1 (the manager path used to drop it to 1).
Energy stayed at burst 1 on both nodes; no crash on either.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-01 05:28:45 -05:00

47 lines
1.9 KiB
Bash

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