diff options
Diffstat (limited to 'mp/src/game/shared/baseprojectile.cpp')
| -rw-r--r-- | mp/src/game/shared/baseprojectile.cpp | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/mp/src/game/shared/baseprojectile.cpp b/mp/src/game/shared/baseprojectile.cpp index c695db93..54a0e9bc 100644 --- a/mp/src/game/shared/baseprojectile.cpp +++ b/mp/src/game/shared/baseprojectile.cpp @@ -12,6 +12,11 @@ IMPLEMENT_NETWORKCLASS_ALIASED( BaseProjectile, DT_BaseProjectile ) BEGIN_NETWORK_TABLE( CBaseProjectile, DT_BaseProjectile ) +#if !defined( CLIENT_DLL ) + SendPropEHandle( SENDINFO( m_hOriginalLauncher ) ), +#else + RecvPropEHandle( RECVINFO( m_hOriginalLauncher ) ), +#endif // CLIENT_DLL END_NETWORK_TABLE() @@ -22,5 +27,63 @@ CBaseProjectile::CBaseProjectile() { #ifdef GAME_DLL m_iDestroyableHitCount = 0; + + m_bCanCollideWithTeammates = false; #endif + m_hOriginalLauncher = NULL; +} + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void CBaseProjectile::SetLauncher( CBaseEntity *pLauncher ) +{ + if ( m_hOriginalLauncher == NULL ) + { + m_hOriginalLauncher = pLauncher; + } + +#ifdef GAME_DLL + ResetCollideWithTeammates(); +#endif // GAME_DLL +} + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void CBaseProjectile::Spawn() +{ + BaseClass::Spawn(); + +#ifdef GAME_DLL + ResetCollideWithTeammates(); +#endif // GAME_DLL } + + +#ifdef GAME_DLL + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void CBaseProjectile::CollideWithTeammatesThink() +{ + m_bCanCollideWithTeammates = true; +} + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void CBaseProjectile::ResetCollideWithTeammates() +{ + // Don't collide with players on the owner's team for the first bit of our life + m_bCanCollideWithTeammates = false; + + SetContextThink( &CBaseProjectile::CollideWithTeammatesThink, gpGlobals->curtime + GetCollideWithTeammatesDelay(), "CollideWithTeammates" ); +} + +#endif // GAME_DLL + |