diff --git a/src/game/server/props.cpp b/src/game/server/props.cpp index dec14e42d..30f1d7cd9 100644 --- a/src/game/server/props.cpp +++ b/src/game/server/props.cpp @@ -2637,6 +2637,18 @@ bool CPhysicsProp::CanBePickedUpByPhyscannon( void ) return true; } +//----------------------------------------------------------------------------- +// Purpose: Clear all flags after respawn +//----------------------------------------------------------------------------- +void CPhysicsProp::Break( CBaseEntity *pBreaker, const CTakeDamageInfo &info ) +{ + m_bFirstCollisionAfterLaunch = false; + // Setup the think function to remove the flags + RegisterThinkContext( "PROP_CLEARFLAGS" ); + SetContextThink( &CPhysicsProp::ClearFlagsThink, gpGlobals->curtime, "PROP_CLEARFLAGS" ); + CBreakableProp::Break( pBreaker, info ); +} + //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- diff --git a/src/game/server/props.h b/src/game/server/props.h index 11ed2118e..86429aaea 100644 --- a/src/game/server/props.h +++ b/src/game/server/props.h @@ -62,7 +62,7 @@ public: virtual int OnTakeDamage( const CTakeDamageInfo &info ); void Event_Killed( const CTakeDamageInfo &info ); - void Break( CBaseEntity *pBreaker, const CTakeDamageInfo &info ); + virtual void Break( CBaseEntity *pBreaker, const CTakeDamageInfo &info ); void BreakThink( void ); void AnimateThink( void ); @@ -346,6 +346,8 @@ public: virtual void VPhysicsUpdate( IPhysicsObject *pPhysics ); virtual void VPhysicsCollision( int index, gamevcollisionevent_t *pEvent ); + void Break( CBaseEntity *pBreaker, const CTakeDamageInfo &info )override; + void InputWake( inputdata_t &inputdata ); void InputSleep( inputdata_t &inputdata ); void InputEnableMotion( inputdata_t &inputdata );