]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
document WEP_FLAG_PENETRATEWALLS
authorMartin Taibr <taibr.martin@gmail.com>
Sun, 21 Oct 2018 21:07:25 +0000 (23:07 +0200)
committerMartin Taibr <taibr.martin@gmail.com>
Sun, 21 Oct 2018 21:07:25 +0000 (23:07 +0200)
qcsrc/server/weapons/tracing.qc

index 506bb43c408b847393bd13216a0e79c066130db6..9e78aa3c360acdec20c36f831f13fc3182fde369 100644 (file)
@@ -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))
        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;
                ent.dphitcontentsmask = DPCONTENTS_BODY | DPCONTENTS_CORPSE;
+       }
        else
                ent.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_CORPSE;
        if(antilag)
        else
                ent.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_CORPSE;
        if(antilag)