From 50312d500a43c661960a82da7f8b11997c630c27 Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Mon, 28 Mar 2022 19:01:29 -0700 Subject: [PATCH] SurfaceProperties: Be more pedantic about what object can contain material info in SurfData_Impact() --- src/gs-entbase/shared/NSSurfacePropEntity.qc | 12 ++++++++++-- src/shared/surfaceproperties.qc | 6 +++--- 2 files changed, 13 insertions(+), 5 deletions(-) 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