#124 RESOLVED against the authored skeleton: the pick's zone is the
struck drawn segment's dzone, ALWAYS -- the cylinder embellishment removed
The open question ('what zone did 1995 designate for hull hits') was
already answered in the KB's #73 dig [T0+T1]: no software pick writer
exists -- the pod's pick was a dpl scene intersection, struck triangle
-> DCS segment -> its SKL-authored dzone; the cylinder lottery was only
ever the UNAIMED path (missiles/splash/rams). The live segpick dump
completes it with the authored data: the madcat's pickable skeleton is
18 segments -- hip, shoulders, guns, thighs, knees, ankles+toes, and
ONE hull piece (jointshakey -> dtorso). No ltorso/rtorso/utorso/rear/
door/searchlight segments exist. Aimed fire at any torso panel
authentically designates CENTER TORSO; the side/rear/upper panels strip
via the unaimed path.
Changes:
* the shared-carrier -> cylinder override (yesterday's embellishment)
is REMOVED: triangle hit -> that segment's dzone, period;
* SegAimPoint: the walker's hull anchor moves from the joint ORIGIN
(crotch gap -- rays sailed between the legs to the terrain sentinel)
to the carrier segment's cull center (the chest);
* [picktri]/[pickwin] diagnostics grew tri/seg/zone fields -- three
consecutive 'mystery' regressions in this stretch were the STALE-EXE
trap (CWD-relative cmake --build from content/ resolved to a
nonexistent dir and the old binary kept running) -- the harness doc's
warning, hit again.
Final zone-walk matrix (spinning target, real MP, full cycles):
limbs 55/70 in-zone (legs/feet 6/6; arm strays = hull/occlusion);
hull-family aims -> dtorso 56/69; victim consumption matches. The
night-10 field table now reads as this model's fingerprint: 'only LCT
gets hits' from aimed energy IS the pod -- one hull piece, dtorso.
What was actually broken and is now fixed: the sphere mis-picks
(rgun-from-a-dtorso-aim class), the unaimed path's 180-degree frame,
and the vertical scatter.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
1a3c268278
commit
00dfbf8f9f
@@ -6127,14 +6127,17 @@ void
|
||||
<< target->GetEntityID() << "\n" << std::flush;
|
||||
}
|
||||
extern int BTMechZoneAimPoint(void *mech, int zone, float out3[3]);
|
||||
extern int BTMechSegAimPoint(void *mech, int seg, float out3[3]);
|
||||
int haveAim = 0;
|
||||
if (BTMechZoneSegAndName(target, s_zwZone, &segIdx, &zname)
|
||||
&& segIdx >= 0)
|
||||
{
|
||||
// prefer the zone's VISUAL center (its pick geometry's
|
||||
// cull-center); the segment ORIGIN sits at the joint
|
||||
// and made feet/lower legs strike the part above.
|
||||
// anchor order: the zone's own pick geometry -> the
|
||||
// CARRIER segment's cull center (hull-family zones own
|
||||
// no geometry; the joint ORIGIN sits in the crotch gap
|
||||
// and rays sail between the legs) -> the raw joint.
|
||||
haveAim = BTMechZoneAimPoint(target, s_zwZone, sp)
|
||||
|| BTMechSegAimPoint(target, segIdx, sp)
|
||||
|| BTResolveSegmentWorld((void *)target, segIdx, sp, rows);
|
||||
}
|
||||
if (haveAim)
|
||||
|
||||
Reference in New Issue
Block a user