diff --git a/code/game/bg_pmove.c b/code/game/bg_pmove.c index 3711869..93e11f5 100644 --- a/code/game/bg_pmove.c +++ b/code/game/bg_pmove.c @@ -351,6 +351,33 @@ static void PM_SetMovementDir( void ) { } +/* +============= +PM_Jump + +Applies jump velocity, event, and animation. +Extracted from PM_CheckJump so it can be called +from other contexts (step jump, double jump, etc). +============= +*/ +static void PM_Jump( void ) { + pml.groundPlane = qfalse; // jumping away + pml.walking = qfalse; + pm->ps->pm_flags |= PMF_JUMP_HELD; + + pm->ps->groundEntityNum = ENTITYNUM_NONE; + pm->ps->velocity[2] = JUMP_VELOCITY; + PM_AddEvent( EV_JUMP ); + + if ( pm->cmd.forwardmove >= 0 ) { + PM_ForceLegsAnim( LEGS_JUMP ); + pm->ps->pm_flags &= ~PMF_BACKWARDS_JUMP; + } else { + PM_ForceLegsAnim( LEGS_JUMPB ); + pm->ps->pm_flags |= PMF_BACKWARDS_JUMP; + } +} + /* ============= PM_CheckJump @@ -373,21 +400,7 @@ static qboolean PM_CheckJump( void ) { return qfalse; } - pml.groundPlane = qfalse; // jumping away - pml.walking = qfalse; - pm->ps->pm_flags |= PMF_JUMP_HELD; - - pm->ps->groundEntityNum = ENTITYNUM_NONE; - pm->ps->velocity[2] = JUMP_VELOCITY; - PM_AddEvent( EV_JUMP ); - - if ( pm->cmd.forwardmove >= 0 ) { - PM_ForceLegsAnim( LEGS_JUMP ); - pm->ps->pm_flags &= ~PMF_BACKWARDS_JUMP; - } else { - PM_ForceLegsAnim( LEGS_JUMPB ); - pm->ps->pm_flags |= PMF_BACKWARDS_JUMP; - } + PM_Jump(); return qtrue; }