diff --git a/game/server/hl2/npc_manhack.cpp b/game/server/hl2/npc_manhack.cpp index feef84f8b7..77cd633706 100644 --- a/game/server/hl2/npc_manhack.cpp +++ b/game/server/hl2/npc_manhack.cpp @@ -3007,6 +3007,8 @@ void CNPC_Manhack::OnPhysGunPickup( CBasePlayer *pPhysGunUser, PhysGunPickup_t r } else { + m_pPrevOwner.Set( GetOwnerEntity() ); + // Suppress collisions between the manhack and the player; we're currently bumping // almost certainly because it's not purely a physics object. SetOwnerEntity( pPhysGunUser ); @@ -3022,8 +3024,10 @@ void CNPC_Manhack::OnPhysGunPickup( CBasePlayer *pPhysGunUser, PhysGunPickup_t r //----------------------------------------------------------------------------- void CNPC_Manhack::OnPhysGunDrop( CBasePlayer *pPhysGunUser, PhysGunDrop_t Reason ) { + SetOwnerEntity( m_pPrevOwner.Get() ); + // Stop suppressing collisions between the manhack and the player - SetOwnerEntity( NULL ); + m_pPrevOwner.Set( NULL ); m_bHeld = false; diff --git a/game/server/hl2/npc_manhack.h b/game/server/hl2/npc_manhack.h index 17a3cedb18..761ccd4a34 100644 --- a/game/server/hl2/npc_manhack.h +++ b/game/server/hl2/npc_manhack.h @@ -254,6 +254,7 @@ private: CSprite *m_pLightGlow; CHandle m_hSmokeTrail; + CHandle m_pPrevOwner; int m_iPanel1; int m_iPanel2;