From 901d1947fba561dba7555b02997c843c59914e2b Mon Sep 17 00:00:00 2001 From: Roman Chistokhodov Date: Mon, 26 Sep 2022 17:55:19 +0300 Subject: [PATCH] Fix tripmines blowing up after loading save game in c1a3d with TRIPMINE_BEAM_DUPLICATION_FIX enabled (#332) --- dlls/tripmine.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/dlls/tripmine.cpp b/dlls/tripmine.cpp index 859e3548..90379807 100644 --- a/dlls/tripmine.cpp +++ b/dlls/tripmine.cpp @@ -282,9 +282,23 @@ void CTripmineGrenade::BeamBreakThink( void ) // respawn detect. if( !m_pBeam ) { +#if TRIPMINE_BEAM_DUPLICATION_FIX + // Use the same trace parameters as the original trace above so the right entity is hit. + TraceResult tr2; + UTIL_TraceLine( pev->origin + m_vecDir * 8.0f, pev->origin - m_vecDir * 32.0f, dont_ignore_monsters, ENT( pev ), &tr2 ); +#endif MakeBeam(); +#if TRIPMINE_BEAM_DUPLICATION_FIX + if( tr2.pHit ) + { + // reset owner too + pev->owner = tr2.pHit; + m_hOwner = CBaseEntity::Instance( tr2.pHit ); + } +#else if( tr.pHit ) m_hOwner = CBaseEntity::Instance( tr.pHit ); // reset owner too +#endif } if( fabs( m_flBeamLength - tr.flFraction ) > 0.001f )