The 08-03 zone rule (struck SEGMENT's SKL dzone, ALWAYS -> every aimed torso hit = center torso) was wrong, and era players' pushback caught it. Byte-level proof: MAD_TOR.BGF zone-tags the hull PER PANEL (dz_utorso x36, dz_ltorso/rtorso x18, dz_dtorso x16, all four rear panels, searchlight); the dpl hit result kept GEOGROUP granularity (dplHitGeoGroup, T0); and the binary's segment->zone map @49db20 has NO runtime caller (raw call-scan: sole caller = CreateStreamedDamageZone, load time) -- no segment-level collapse mechanism exists. Oracle's night-10 'only LCT gets hits' audit was the BUG's fingerprint, not the pod's design. Fix: MechSegmentPick attributes the struck triangle to its draw op (index range) and takes the op's .DZM-bound zone -- the #87 armour-darkening bindings, the same authored patch->zone mapping that already paints the panels -- with the segment dzone as the untagged fallback. ZoneAimPoint now aims hull zones at their patch CENTROIDS (all hull zones previously shared the chest cull-center), which also upgrades the zone walker. Bench (2-node zone-walk vs spinning madcat, zonewalk_madcat.sh): every hull panel resolves individually -- utorso 11/12 in-zone, no L/R mirroring, all four rear panels register; misses are the panel facing the shooter mid-spin (correct geometry, not misattribution). Victim applied 254 hits spread across every panel family. Was 102/102 hull aims -> dtorso before the fix. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
38 lines
1.5 KiB
Bash
38 lines
1.5 KiB
Bash
#!/usr/bin/env bash
|
|
# #124-PATCH verify: per-panel hull zone resolution vs a MADCAT target.
|
|
# cured by the #124 triangle-pick work? The zone-walk matrix vs a LOKI target:
|
|
# shooter servo-aims every zone (feet included) through the real reticle path,
|
|
# 3 laser pulses each; read A's [walk] FIRE lines vs B's [dmghit] zone= lines.
|
|
# Same rig as scratchpad/night10/zonewalk.sh, target vehicle=madcat, ~7 min tail.
|
|
set -x
|
|
. /c/git/bt411/scratchpad/night6/bench_common.sh
|
|
cd /c/git/bt411/content || exit 1
|
|
bt_assert_player_env
|
|
taskkill //F //IM btl4.exe > /dev/null 2>&1
|
|
sleep 2
|
|
rm -f zwm_a.log zwm_b.log
|
|
bt_expert_egg MP.EGG ZWM.EGG
|
|
sed -i "s/^map=.*/map=grass/; s/^time=.*/time=day/" ZWM.EGG
|
|
# pilot 1 (node A, shooter) = madcat (proven servo constraints);
|
|
# pilot 2 (node B, target) = LOKI (the #92 chassis)
|
|
python - << 'EOF'
|
|
lines = open('ZWM.EGG').read().splitlines(True)
|
|
n = 0
|
|
for i, l in enumerate(lines):
|
|
if l.startswith('vehicle='):
|
|
n += 1
|
|
lines[i] = 'vehicle=madcat\n' if n == 1 else 'vehicle=madcat\n'
|
|
open('ZWM.EGG', 'w').writelines(lines)
|
|
print('vehicles set:', n)
|
|
EOF
|
|
|
|
BT_SPIN_SELF=15 BT_DMG_LOG=1 BT_DEATH_LOG=1 BT_MP_LOG=1 \
|
|
bt_launch zwm_b.log ZWM.EGG 0x0C -net 1601
|
|
sleep 2
|
|
BT_ZONE_WALK=6 BT_PICK_LOG=1 BT_GOTO=enemy BT_GOTO_STOP=90 BT_KEY_NOFOCUS=1 \
|
|
BT_DMG_LOG=1 BT_RANGE_LOG=1 BT_MP_LOG=1 \
|
|
bt_launch zwm_a.log ZWM.EGG 0x03 -net 1501
|
|
sleep 5
|
|
python ../tools/btconsole.py ZWM.EGG 127.0.0.1:1501 127.0.0.1:1601 > zwm_relay.log 2>&1 &
|
|
sleep 400 # ~7 min: enough for a full zone walk incl. both feet
|