diff --git a/src/game/shared/swarm/asw_alien_shared.cpp b/src/game/shared/swarm/asw_alien_shared.cpp index 8f5c87326..9636a25cf 100644 --- a/src/game/shared/swarm/asw_alien_shared.cpp +++ b/src/game/shared/swarm/asw_alien_shared.cpp @@ -110,7 +110,7 @@ void CASW_Alien::DoBloodDecal( float flDamage, const Vector &vecPos, const Vecto return; // make blood decal on the wall! - trace_t Bloodtr; + trace_t Bloodtr, Bloodtr2; Vector vecTraceDir; float flNoise; int cCount; @@ -157,13 +157,18 @@ void CASW_Alien::DoBloodDecal( float flDamage, const Vector &vecPos, const Vecto vecTraceDir.y += random->RandomFloat( -flNoise, flNoise ); vecTraceDir.z += random->RandomFloat( -flNoise, flNoise ); - // Don't bleed on grates. + // Bleed on and behind the grates. UTIL_TraceLine( vecPos, vecPos + vecTraceDir * -flTraceDist, MASK_SHOT_HULL & ~CONTENTS_GRATE, this, COLLISION_GROUP_NONE, &Bloodtr); + UTIL_TraceLine( vecPos, vecPos + vecTraceDir * -flTraceDist, MASK_SHOT_HULL, this, COLLISION_GROUP_NONE, &Bloodtr2 ); if ( Bloodtr.fraction != 1.0 ) { UTIL_BloodDecalTrace( &Bloodtr, BloodColor() ); } + if ( Bloodtr2.fraction != 1.0 && Bloodtr.endpos != Bloodtr2.endpos ) + { + UTIL_BloodDecalTrace( &Bloodtr2, BloodColor() ); + } } } diff --git a/src/game/shared/util_shared.cpp b/src/game/shared/util_shared.cpp index ff49c6cec..97f555e4e 100644 --- a/src/game/shared/util_shared.cpp +++ b/src/game/shared/util_shared.cpp @@ -891,7 +891,7 @@ void UTIL_BloodDecalTrace( trace_t *pTrace, int bloodColor ) return; } #endif - else if (bloodColor == BLOOD_COLOR_BRIGHTGREEN) + else if (bloodColor == BLOOD_COLOR_BRIGHTGREEN || bloodColor == BLOOD_COLOR_GREEN ) { UTIL_DecalTrace( pTrace, "GreenBlood" ); }