#142 crouch: the mech is fine -- it is a missing PANEL ANIMATION
Benched solo AND in MP on the same chassis: both presses reach
DuckRequestMessageHandler, zero drops, SQUAT -> squat clip parked -> RISE.
Locomotion is not the bug, and MP is not refusing it.
Added an ungated [duck] REQUEST DROPPED receipt at the consumer's silent miss.
The squatCapable==0 path skips the consumer entirely AND leaves duckState
latched at 1 with NO log today; the posture-gate miss logged only under
BT_DUCK_LOG, which no player sets. Neither fired on madcat.
What the pilot sees, traced with BT_LAMP_LOG: the button lamp is momentary
press feedback, not state --
PRESS -> [lamp] 0x13 <- 0x3c
SQUAT -> mech crouches, clip parked
RELEASE -> [lamp] 0x13 <- 0x14 <-- while still CROUCHED
so crouched and standing look identical.
Era testimony corrects the scope: the button should ANIMATE A MECH SYMBOL
beside it, standing <-> crouching (operator). Lynx: 'When a mech stops,
crouch button lowers its stance and plays crouch animation. Mech is
immobilized until crouch is pushed again, and mech rises.' Draco concurs.
Two real gaps, neither fixed here:
1. no immobilization while crouched -- nothing gates movement on duckState
or the parked leg alarm. NB a driven mech with a parked leg channel is
the [skate] signature (#52), so this may not be cosmetic.
2. no stance symbol -- no gauge element draws one, and the decomp carries no
crouch/squat/stance/duck graphic string, so it is an authored IMAGE on the
secondary MFD; find it in that gauge's element list, not by string.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NCJQkvq6G2JNrpVbA75tVZ
This commit is contained in:
co-authored by
Claude Opus 5
parent
61f21107b4
commit
0530366687
@@ -4420,6 +4420,32 @@ void
|
||||
// stability, so peers pose the squat for free) and flip the
|
||||
// stability alarm (ducked = 0, risen = 1). The request is
|
||||
// consumed whenever both gates passed, hit or miss.
|
||||
// #142 RECEIPT (ungated, 1 Hz). A pending duck request that produces
|
||||
// no posture change is INVISIBLE today: if squatCapable is 0 the
|
||||
// consumer below is skipped entirely -- no log, and duckState is not
|
||||
// even consumed, so the latch sticks at 1 forever. The other miss
|
||||
// (posture not 1/2) logs only under BT_DUCK_LOG, which no player
|
||||
// sets. Field report (Oracle, night 13): "the light next to it
|
||||
// always flashes when pressed, but state does not change" -- the
|
||||
// press reaches the handler and a GATE declines it, exactly the
|
||||
// shape the eject bug had (#108: EvaluateEjectPermission refusing a
|
||||
// healthy mech while the lamp still responded). Name the gate.
|
||||
if (duckState != 0
|
||||
&& (squatCapable == 0 || (mapPosture != 1 && mapPosture != 2)))
|
||||
{
|
||||
static int s_duckDrop = 0;
|
||||
if ((s_duckDrop++ % 60) == 0)
|
||||
DEBUG_STREAM << "[duck] REQUEST DROPPED: squatCapable="
|
||||
<< squatCapable << " posture=" << mapPosture
|
||||
<< " mode=" << MovementMode()
|
||||
<< " legLvl=" << (int)legStateAlarm.GetLevel()
|
||||
<< " myo=" << myomerEffectiveness
|
||||
<< (squatCapable == 0
|
||||
? " <-- no squ/sqd clips: consumer skipped, latch stuck"
|
||||
: " <-- posture gate")
|
||||
<< "\n" << std::flush;
|
||||
}
|
||||
|
||||
if (duckState != 0 && squatCapable != 0)
|
||||
{
|
||||
if (mapPosture == 1)
|
||||
|
||||
Reference in New Issue
Block a user