diff --git a/src/gs-entbase/shared/NSSurfacePropEntity.qc b/src/gs-entbase/shared/NSSurfacePropEntity.qc index 19f679c1..fb758985 100644 --- a/src/gs-entbase/shared/NSSurfacePropEntity.qc +++ b/src/gs-entbase/shared/NSSurfacePropEntity.qc @@ -257,13 +257,21 @@ void NSSurfacePropEntity::SurfaceDataFinish(void) { SurfData_SetStage(m_strSurfData); - m_iMaterial = SurfData_Finish(); + + if (m_strSurfData) + m_iMaterial = SurfData_Finish(); + else + m_iMaterial = -1; } void NSSurfacePropEntity::PropDataFinish(void) { PropData_SetStage(m_strPropData); - m_iPropData = PropData_Finish(); + + if (m_strPropData) + m_iPropData = PropData_Finish(); + else + m_iPropData = -1; } #else float diff --git a/src/shared/surfaceproperties.qc b/src/shared/surfaceproperties.qc index 734ddd03..bbd9e1cc 100644 --- a/src/shared/surfaceproperties.qc +++ b/src/shared/surfaceproperties.qc @@ -489,10 +489,10 @@ SurfData_Impact(entity e, int fl, vector org, vector ang) } else { /* anything with takedamage = DAMAGE_YES is a NSurfacePropEntity. */ NSSurfacePropEntity foo = (NSSurfacePropEntity)e; - if (foo.GetSurfaceData(SURFDATA_MATERIAL) == -1) - SurfData_Impact_SurfaceParm(e, fl, org, ang); - else + if (foo.HasSurfaceData() && foo.GetSurfaceData(SURFDATA_MATERIAL) != -1) FX_Impact(foo.GetSurfaceData(SURFDATA_FX_IMPACT), org, ang); + else + SurfData_Impact_SurfaceParm(e, fl, org, ang); } } #endif