summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/bg_misc.c1
-rw-r--r--src/game/g_weapon.c16
-rw-r--r--src/game/tremulous.h1
3 files changed, 9 insertions, 9 deletions
diff --git a/src/game/bg_misc.c b/src/game/bg_misc.c
index d5e1e1c2..567bb8c7 100644
--- a/src/game/bg_misc.c
+++ b/src/game/bg_misc.c
@@ -2767,6 +2767,7 @@ char *eventnames[ ] =
"EV_BULLET_HIT_WALL",
"EV_SHOTGUN",
+ "EV_MASS_DRIVER",
"EV_MISSILE_HIT",
"EV_MISSILE_MISS",
diff --git a/src/game/g_weapon.c b/src/game/g_weapon.c
index 41ec53f8..7c3ed254 100644
--- a/src/game/g_weapon.c
+++ b/src/game/g_weapon.c
@@ -466,21 +466,14 @@ MASS DRIVER
void massDriverFire( gentity_t *ent )
{
trace_t tr;
- vec3_t end;
gentity_t *tent;
gentity_t *traceEnt;
- VectorMA( muzzle, 8192 * 16, forward, end );
-
- G_UnlaggedOn( ent, muzzle, 8192 * 16 );
- trap_Trace( &tr, muzzle, NULL, NULL, end, ent->s.number, MASK_SHOT );
- G_UnlaggedOff( );
+ G_WideTrace( &tr, ent, 8192.0f * 16.0f, MDRIVER_WIDTH, MDRIVER_WIDTH, &traceEnt );
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 );
@@ -489,10 +482,15 @@ void massDriverFire( gentity_t *ent )
(traceEnt->s.eType == ET_BUILDABLE ||
traceEnt->s.eType == ET_PLAYER ) )
{
- BloodSpurt( ent, traceEnt, &tr );
+ WideBloodSpurt( 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 656f3c00..40887cf2 100644
--- a/src/game/tremulous.h
+++ b/src/game/tremulous.h
@@ -423,6 +423,7 @@ 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