diff --git a/game/neo/scripts/kb_act.lst b/game/neo/scripts/kb_act.lst index 569e922755..c53b6fe8f4 100644 --- a/game/neo/scripts/kb_act.lst +++ b/game/neo/scripts/kb_act.lst @@ -14,6 +14,8 @@ "toggle_walk" "Walk (toggle)" "+jump" "#Valve_Jump" "+duck" "#Valve_Duck" +"+moveup" "Move Up (Roaming)" +"+movedown" "Move Down (Roaming)" "blank" "==========================" "blank" "#Valve_Combat_Title" "blank" "==========================" diff --git a/src/game/client/in_main.cpp b/src/game/client/in_main.cpp index d61fe65688..bfa0824a79 100644 --- a/src/game/client/in_main.cpp +++ b/src/game/client/in_main.cpp @@ -1679,7 +1679,7 @@ int CInput::GetButtonBits( int bResetState ) CalcButtonBits( bits, IN_LEAN_RIGHT, s_ClearInputState, &in_lean_right, bResetState ); CalcButtonBits( bits, IN_THERMOPTIC, s_ClearInputState, &in_thermoptic, bResetState); CalcButtonBits( bits, IN_VISION, s_ClearInputState, &in_vision, bResetState); - if (KeyState(&in_speed)) + if (KeyState(&in_speed) && !IsLocalPlayerSpectator()) { // Cancel walk toggle if sprinting KeyUp(&in_walk, nullptr); diff --git a/src/game/shared/gamemovement.cpp b/src/game/shared/gamemovement.cpp index 03f6a75189..e1f52cb997 100644 --- a/src/game/shared/gamemovement.cpp +++ b/src/game/shared/gamemovement.cpp @@ -2311,7 +2311,22 @@ void CGameMovement::FullObserverMove( void ) float fmove = mv->m_flForwardMove * factor; float smove = mv->m_flSideMove * factor; - + +#ifdef NEO + const bool bDroneMove = mv->m_nButtons & IN_WALK; + if (bDroneMove) + { + forward.z = 0; + if (fmove && smove) + { + const float absFMove = fabs(fmove); + const float absSMove = fabs(smove); + const float moveMagnitude = FastSqrt((absFMove * absFMove) + (absSMove * absSMove)); + fmove *= absFMove / moveMagnitude; + smove *= absSMove / moveMagnitude; + } + } +#endif // NEO VectorNormalize (forward); // Normalize remainder of vectors VectorNormalize (right); // @@ -2389,6 +2404,21 @@ void CGameMovement::FullNoClipMove( float factor, float maxacceleration ) float fmove = mv->m_flForwardMove * factor; float smove = mv->m_flSideMove * factor; +#ifdef NEO + const bool bDroneMove = mv->m_nButtons & IN_WALK; + if (bDroneMove) + { + forward.z = 0; + if (fmove && smove) + { + const float absFMove = fabs(fmove); + const float absSMove = fabs(smove); + const float moveMagnitude = FastSqrt((absFMove * absFMove) + (absSMove * absSMove)); + fmove *= absFMove / moveMagnitude; + smove *= absSMove / moveMagnitude; + } + } +#endif // NEO VectorNormalize (forward); // Normalize remainder of vectors VectorNormalize (right); //