BT410 5.3.129: shot-up muscles slow the mech -- the mobility scan lands and the mobilityScale [T1] retires
The master perf's opening scan maxes the myomer chain's speedEffect into the mobility scale and applies it straight to the pilot's command cells: the throttle is multiplied by it, and a scale inside the 1e-4 deadzone zeroes the turn outright -- a mech with dead muscles cannot even pivot. It is the same cell the duck driver already read as "the legs still work", so that gate stops being a constant. THE CHAIN IDENTITY IS NOW PROVEN RATHER THAN INFERRED. My 5.3.122 note pinned mech+0x7ac to Myomers "by adjacency to the string pool", which nearly went wrong: the very cell the scan reads, +0x31c, is a MechWeapon trigger over in the weapon TU. The decisive evidence is arithmetic -- the Myomers cap-raise reads seekVoltage at +0x330 indexed by maxSeekVoltageIndex at +0x32c, and walking our own member order backwards from there lands speedEffect exactly on +0x31c. The ctor's myomer sweep also carries the other half: walking the chain is what sets the "I computed my own top speed" flag, so a mech WITH myomers broadcasts its cap and one without adopts the streamed value. Safe by construction against the obvious hazard: the mapper reassigns its demands from scratch in InterpretControls, which ticks before the mech's performance, so multiplying its cell in place cannot compound frame to frame. Soak: [mobility] scale 1 over 1 myomers on an undamaged bhk1 -- throttle unscaled, drive unchanged, zero faults. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -169,6 +169,24 @@
|
||||
Scalar
|
||||
GetTurnDemand() const { Check(this); return turnDemand; }
|
||||
|
||||
//
|
||||
// The master perf writes the mobility scale straight into the
|
||||
// mapper's command cells (binary @0x4a9d5d: throttle *= scale, and
|
||||
// a scale inside the 1e-4 deadzone zeroes the turn outright -- a
|
||||
// mech with dead myomers cannot even pivot). Applied here so the
|
||||
// cells stay owned by the mapper.
|
||||
//
|
||||
void
|
||||
ApplyMobilityScale(Scalar scale)
|
||||
{
|
||||
Check(this);
|
||||
speedDemand *= scale;
|
||||
if (scale <= 0.0001f && scale >= -0.0001f)
|
||||
{
|
||||
turnDemand = 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// The LIMP machines write the demand cell DOWN to the damaged side's
|
||||
// speed cap (binary GimpLegClipFinished @004a7970 preamble writes
|
||||
|
||||
Reference in New Issue
Block a user