diff --git a/server/cbase.h b/server/cbase.h index 9f93d4ff..138b8480 100644 --- a/server/cbase.h +++ b/server/cbase.h @@ -632,7 +632,6 @@ class CBaseEntity { if( m_iOldSolid == SOLID_NOT && pev->solid != SOLID_NOT ) { - WorldPhysic->EnableCollision( this, FALSE ); m_iOldSolid = pev->solid; pev->solid = SOLID_NOT; } @@ -642,7 +641,6 @@ class CBaseEntity { if( m_iOldSolid != SOLID_NOT && pev->solid == SOLID_NOT ) { - WorldPhysic->EnableCollision( this, TRUE ); pev->solid = m_iOldSolid; m_iOldSolid = SOLID_NOT; } diff --git a/server/physic.cpp b/server/physic.cpp index a85ac6f9..663f30a5 100644 --- a/server/physic.cpp +++ b/server/physic.cpp @@ -622,7 +622,9 @@ bool CPhysicsPushedEntities::SpeculativelyCheckPush( PhysicsPushedInfo_t &info, } // we're not blocked if the blocker is point-sized or non-solid - if( pBlocker->IsPointSized() || pBlocker->pev->solid == SOLID_NOT ) + // dynamic actors also doesn't block way since all pushables are kinematic actors + // and they just can push away other dynamic actors despite of obstacles + if( pBlocker->IsPointSized() || pBlocker->pev->solid == SOLID_NOT || bIsDynamic ) { return true; }