From: Martin Taibr <taibr.martin@gmail.com>
Date: Sun, 21 Oct 2018 21:07:25 +0000 (+0200)
Subject: document WEP_FLAG_PENETRATEWALLS
X-Git-Tag: xonotic-v0.8.5~1749
X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=0548dc7639089122c9270c87abe9e769fe89cd9a;p=xonotic%2Fxonotic-data.pk3dir.git

document WEP_FLAG_PENETRATEWALLS
---

diff --git a/qcsrc/server/weapons/tracing.qc b/qcsrc/server/weapons/tracing.qc
index 506bb43c40..9e78aa3c36 100644
--- a/qcsrc/server/weapons/tracing.qc
+++ b/qcsrc/server/weapons/tracing.qc
@@ -31,7 +31,16 @@ void W_SetupShot_Dir_ProjectileSize_Range(entity ent, .entity weaponentity, vect
 	if(!IS_CLIENT(ent))
 		antilag = false; // no antilag for non-clients!
 	if (IS_PLAYER(ent) && (wep.spawnflags & WEP_FLAG_PENETRATEWALLS))
+	{
+		// This is the reason rifle, MG, OKMG and other fireBullet weapons don't hit the crosshair when shooting at walls.
+		// This is intentional, otherwise if you stand too close to a (glass) wall and attempt to shoot an enemy through it,
+		// trueaim will cause the shot to hit the wall exactly but then miss the enemy (unless shooting from eye/center).
+		// TODO for fireBullet, find how far the shot will penetrate and aim at that
+		//      for fireRailgunbullet, find the farthest target and aim at that
+		//      this will avoid issues when another player is passing in front of you when you shoot
+		//      (currently such a shot will hit him but then miss the original target)
 		ent.dphitcontentsmask = DPCONTENTS_BODY | DPCONTENTS_CORPSE;
+	}
 	else
 		ent.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_CORPSE;
 	if(antilag)