From af5155d6159abb1f2b6a75d93630b94660253d42 Mon Sep 17 00:00:00 2001 From: Sam V Date: Wed, 9 Mar 2022 13:58:24 +0100 Subject: [PATCH] Fix FL_FAKECLIENT flag being cleared in some places Resolves ValveSoftware/halflife#3256 --- dlls/player.cpp | 3 ++- dlls/weapons/CDisplacerBall.cpp | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/dlls/player.cpp b/dlls/player.cpp index 25e976ed..8a1111df 100644 --- a/dlls/player.cpp +++ b/dlls/player.cpp @@ -5301,7 +5301,8 @@ bool CBasePlayer::Menu_Char_Input(int inp) if (OBS_NONE != pev->iuser1) { pev->effects &= ~EF_NODRAW; - pev->flags = FL_CLIENT; + pev->flags &= FL_FAKECLIENT; + pev->flags |= FL_CLIENT; pev->takedamage = DAMAGE_YES; m_iHideHUD &= ~(HIDEHUD_HEALTH | HIDEHUD_WEAPONS); m_afPhysicsFlags &= PFLAG_OBSERVER; diff --git a/dlls/weapons/CDisplacerBall.cpp b/dlls/weapons/CDisplacerBall.cpp index 7342c501..eeb9e7c9 100644 --- a/dlls/weapons/CDisplacerBall.cpp +++ b/dlls/weapons/CDisplacerBall.cpp @@ -166,7 +166,8 @@ void CDisplacerBall::BallTouch(CBaseEntity* pOther) { CBasePlayer* pPlayer = static_cast(pOther); - //TODO: what is this for? - Solokiller + //Clear any flags set on player (onground, using grapple, etc). + pPlayer->pev->flags &= FL_FAKECLIENT; pPlayer->pev->flags = FL_CLIENT; pPlayer->m_flFallVelocity = 0;