diff options
-rw-r--r-- | src/game/g_weapon.c | 16 | ||||
-rw-r--r-- | src/game/tremulous.h | 1 |
2 files changed, 9 insertions, 8 deletions
diff --git a/src/game/g_weapon.c b/src/game/g_weapon.c index 7c3ed254..d71de3dd 100644 --- a/src/game/g_weapon.c +++ b/src/game/g_weapon.c @@ -466,14 +466,21 @@ MASS DRIVER void massDriverFire( gentity_t *ent ) { trace_t tr; + vec3_t end; gentity_t *tent; gentity_t *traceEnt; - G_WideTrace( &tr, ent, 8192.0f * 16.0f, MDRIVER_WIDTH, MDRIVER_WIDTH, &traceEnt ); + VectorMA( muzzle, 8192.0f * 16.0f, forward, end ); + + G_UnlaggedOn( ent, muzzle, 8192.0f * 16.0f ); + trap_Trace( &tr, muzzle, NULL, NULL, end, ent->s.number, MASK_SHOT ); + G_UnlaggedOff( ); if( tr.surfaceFlags & SURF_NOIMPACT ) return; + traceEnt = &g_entities[ tr.entityNum ]; + // snap the endpos to integers, but nudged towards the line SnapVectorTowards( tr.endpos, muzzle ); @@ -482,15 +489,10 @@ void massDriverFire( gentity_t *ent ) (traceEnt->s.eType == ET_BUILDABLE || traceEnt->s.eType == ET_PLAYER ) ) { - WideBloodSpurt( ent, traceEnt, &tr ); + BloodSpurt( ent, traceEnt, &tr ); } else { - // If we missed, G_WideTrace hasn't traced against the world - // so we need to do another trace to find the endpoint - vec3_t end; - VectorMA( muzzle, 8192.0f * 16.0f, forward, end ); - trap_Trace( &tr, muzzle, NULL, NULL, end, ent->s.number, CONTENTS_SOLID ); tent = G_TempEntity( tr.endpos, EV_MISSILE_MISS ); tent->s.eventParm = DirToByte( tr.plane.normal ); tent->s.weapon = ent->s.weapon; diff --git a/src/game/tremulous.h b/src/game/tremulous.h index 8c5b00b1..f4ba22c4 100644 --- a/src/game/tremulous.h +++ b/src/game/tremulous.h @@ -423,7 +423,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define MDRIVER_REPEAT 1000 #define MDRIVER_K_SCALE 1.0f #define MDRIVER_RELOAD 2000 -#define MDRIVER_WIDTH 5 #define CHAINGUN_PRICE 400 #define CHAINGUN_BULLETS 300 |