diff --git a/src/game/server/triggers.cpp b/src/game/server/triggers.cpp index bc50b00dc3..829d29cac6 100644 --- a/src/game/server/triggers.cpp +++ b/src/game/server/triggers.cpp @@ -2844,6 +2844,7 @@ void CAI_ChangeHintGroup::InputActivate( inputdata_t &inputdata ) #define SF_CAMERA_PLAYER_SNAP_TO 16 #define SF_CAMERA_PLAYER_NOT_SOLID 32 #define SF_CAMERA_PLAYER_INTERRUPT 64 +#define SF_CAMERA_PLAYER_NO_INVULN 128 //----------------------------------------------------------------------------- @@ -3095,10 +3096,12 @@ void CTriggerCamera::Enable( void ) m_nPlayerButtons = pPlayer->m_nButtons; - - // Make the player invulnerable while under control of the camera. This will prevent situations where the player dies while under camera control but cannot restart their game due to disabled player inputs. m_nOldTakeDamage = m_hPlayer->m_takedamage; - m_hPlayer->m_takedamage = DAMAGE_NO; + if ( !HasSpawnFlags( SF_CAMERA_PLAYER_NO_INVULN ) ) + { + // Make the player invulnerable while under control of the camera. This will prevent situations where the player dies while under camera control but cannot restart their game due to disabled player inputs. + m_hPlayer->m_takedamage = DAMAGE_NO; + } if ( HasSpawnFlags( SF_CAMERA_PLAYER_NOT_SOLID ) ) { @@ -3239,8 +3242,11 @@ void CTriggerCamera::Disable( void ) { ((CBasePlayer*)m_hPlayer.Get())->GetActiveWeapon()->RemoveEffects( EF_NODRAW ); } - //return the player to previous takedamage state - m_hPlayer->m_takedamage = m_nOldTakeDamage; + // return the player to previous takedamage state if the camera has enabled invulnerability + if ( !HasSpawnFlags( SF_CAMERA_PLAYER_NO_INVULN ) ) + { + m_hPlayer->m_takedamage = m_nOldTakeDamage; + } } m_state = USE_OFF;