The binary's effect watcher (FUN_0042aa2c) raises ForceUpdate(DamageZoneUpdateModelFlag) when a zone's damageLevel CROSSES a band-descriptor threshold (FUN_0042a5f4, master-gated on entity+0x28 & 0xc) -- that send is how every other pod's replicant learns zone levels mid-fight. The port's band hub kept only the graphic-state branch, so an observer's copy sat at 0.0 until destruction: no enemy hull darkening, no doll movement, ever (the night-10 "no armour discoloration" report). Restored the level branch with the already-reconstructed DescriptorCrossed (@0042a5f4) + the master gate on both branches (mesh swap still runs on every instance). 2-node verified: A-side armour watcher pushed 114 level changes; every replicant peak matched the master's finals to 4 decimals (dtorso 0.9321 == 0.9321). Render path cleared separately (gotcha #23 discharged): BT_ARMOR_FORCE 0/1 A/B captures prove the tint renders (hull -> charcoal at 1.0). Solo perception is the authentic economy: 2-25 pt lasers vs 68-185 pt pools. Bench: zonewalk.sh node A now carries BT_ARMOR_LOG + BT_SHOT_EVERY (the standing zone-replication receipt) + digest_walk.py; armorpx.sh is the force-pair pixel rig. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
25 lines
1.1 KiB
Bash
25 lines
1.1 KiB
Bash
#!/bin/bash
|
|
# #87 pixel-verification A/B: identical solo scene, all zones' draw-op damage
|
|
# level FORCED 0.0 vs 1.0 (BT_ARMOR_FORCE pins at the watcher, bypassing the
|
|
# sim), numbered backbuffer captures -> pixel diff decides whether the damage
|
|
# tint RENDERS at all (gotcha #23: a colour change that logs perfectly and
|
|
# renders nothing).
|
|
set -e
|
|
cd /c/git/bt411/content
|
|
. /c/git/bt411/scratchpad/night6/bench_common.sh
|
|
taskkill //F //IM btl4.exe > /dev/null 2>&1 || true; sleep 2
|
|
rm -f apxA_*.png apxB_*.png
|
|
sed "s/^map=.*/map=grass/; s/^time=.*/time=day/; 0,/^vehicle=.*/s//vehicle=madcat/" MP.EGG > APX.EGG
|
|
for F in 0.0 1.0; do
|
|
TAG=A; [ "$F" = "1.0" ] && TAG=B
|
|
rm -f "apx_$F.log"
|
|
BT_ARMOR_FORCE=$F BT_ARMOR_LOG=1 BT_SHOT_EVERY=120 BT_SHOT_PREFIX=apx$TAG \
|
|
BT_SPAWN_ENEMY=1 BT_GOTO=enemy BT_GOTO_STOP=55 \
|
|
bt_launch "apx_$F.log" APX.EGG 0x03
|
|
sleep 75
|
|
taskkill //F //IM btl4.exe > /dev/null 2>&1 || true; sleep 3
|
|
done
|
|
echo "=== captures:"; ls apxA_*.png apxB_*.png 2>/dev/null
|
|
echo "=== [armor] lines force=1.0:"; grep -c "\[armor\]" apx_1.0.log || true
|
|
grep -m2 "\[armor\]" apx_1.0.log || true
|