#124 CORRECTION: aimed hull hits resolve the struck dz_* PANEL -- players were right
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>
This commit is contained in:
co-authored by
Claude Fable 5
parent
98234c8b15
commit
1d3616cceb
@@ -0,0 +1,37 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user