Add full QL-style PM_StepSlideMove with:
- Master gate: trace from start to final position filters micro-bumps
- Projected position validation: trace down at where player would be
without collision, rejects walls (startsolid) and confirms stairs
- Air-step friction: 3% horizontal penalty on airborne step-ups
- PM_Jump() call when all gates pass on valid stair geometry
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Two changes to PM_StepSlideMove that transform stair traversal:
1. Remove Q3 velocity[2]>0 gate (QL pm_airSteps): allow step-ups
while airborne, enabling bunny-hop stair traversal.
2. Conditional velocity clip: only clip velocity to step-down surface
when moving INTO it (dot product < 0). Skip clip when velocity is
moving away (dot >= 0), preserving upward momentum through steps.
This is THE key mechanic for smooth QL-style stair hopping.
Also adds 100ms jump cooldown (lastJumpTime) to prevent same-frame
double-fires during rapid step-ups.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>