From f1a72395b80be26a32791b0ffa5c175246a4f0af Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Fri, 19 Nov 2010 22:22:46 +0100 Subject: [PATCH] ballistic projectiles: bail out on weapclip --- qcsrc/server/extensions.qh | 2 +- qcsrc/server/w_common.qc | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/qcsrc/server/extensions.qh b/qcsrc/server/extensions.qh index b72a05000..da45d6d43 100644 --- a/qcsrc/server/extensions.qh +++ b/qcsrc/server/extensions.qh @@ -1813,7 +1813,7 @@ float Q3SURFACEFLAG_FLESH = 64; // projectiles should do a fleshy effect (blood? //float Q3SURFACEFLAG_POINTLIGHT = 2048; // compiler hint (not important to qc) float Q3SURFACEFLAG_METALSTEPS = 4096; // walking on this surface should make metal step sounds float Q3SURFACEFLAG_NOSTEPS = 8192; // walking on this surface should not make footstep sounds -//float Q3SURFACEFLAG_NONSOLID = 16384; // compiler hint (not important to qc) +float Q3SURFACEFLAG_NONSOLID = 16384; // compiler hint (not important to qc) //float Q3SURFACEFLAG_LIGHTFILTER = 32768; // compiler hint (not important to qc) //float Q3SURFACEFLAG_ALPHASHADOW = 65536; // compiler hint (not important to qc) //float Q3SURFACEFLAG_NODLIGHT = 131072; // compiler hint (not important to qc) diff --git a/qcsrc/server/w_common.qc b/qcsrc/server/w_common.qc index 3995a4815..b453918ce 100644 --- a/qcsrc/server/w_common.qc +++ b/qcsrc/server/w_common.qc @@ -310,6 +310,26 @@ void W_BallisticBullet_Touch (void) PROJECTILE_TOUCH; W_BallisticBullet_Hit (); + // if we hit "weapclip", bail out + // + // rationale of this check: + // + // any shader that is solid, nodraw AND trans is meant to clip weapon + // shots and players, but has no other effect! + // + // if it is not trans, it is caulk and should not have this side effect + // + // matching shaders: + // common/weapclip (intended) + // common/noimpact (is supposed to eat projectiles, but is erased farther above) + if(trace_dphitq3surfaceflags + & (Q3SURFACEFLAG_NONSOLID | Q3SURFACEFLAG_NODRAW | Q3SURFACEFLAG_TRANS) + == ( Q3SURFACEFLAG_NODRAW | Q3SURFACEFLAG_TRANS)) + { + remove(self); + return; + } + density = other.ballistics_density; if(density == 0) density = 1; -- 2.39.2