summaryrefslogtreecommitdiff
path: root/src/game
diff options
context:
space:
mode:
Diffstat (limited to 'src/game')
-rw-r--r--src/game/bg_misc.c2
-rw-r--r--src/game/bg_slidemove.c4
-rw-r--r--src/game/g_active.c10
-rw-r--r--src/game/g_admin.c41
-rw-r--r--src/game/g_buildable.c2
-rw-r--r--src/game/g_cmds.c12
-rw-r--r--src/game/g_combat.c2
-rw-r--r--src/game/g_local.h2
-rw-r--r--src/game/g_main.c11
-rw-r--r--src/game/g_maprotation.c4
-rw-r--r--src/game/g_session.c4
-rw-r--r--src/game/g_weapon.c50
12 files changed, 41 insertions, 103 deletions
diff --git a/src/game/bg_misc.c b/src/game/bg_misc.c
index fd50509..cb41601 100644
--- a/src/game/bg_misc.c
+++ b/src/game/bg_misc.c
@@ -4964,7 +4964,7 @@ Check if a weapon has full ammo
*/
qboolean BG_WeaponIsFull( weapon_t weapon, int stats[ ], int ammo, int clips )
{
- int maxAmmo, maxClips;
+ int maxAmmo = 0, maxClips = 0;
BG_FindAmmoForWeapon( weapon, &maxAmmo, &maxClips );
diff --git a/src/game/bg_slidemove.c b/src/game/bg_slidemove.c
index aa32a6a..646475e 100644
--- a/src/game/bg_slidemove.c
+++ b/src/game/bg_slidemove.c
@@ -290,7 +290,6 @@ PM_StepSlideMove
qboolean PM_StepSlideMove( qboolean gravity, qboolean predictive )
{
vec3_t start_o, start_v;
- vec3_t down_o, down_v;
trace_t trace;
vec3_t normal;
vec3_t step_v, step_vNormal;
@@ -339,9 +338,6 @@ qboolean PM_StepSlideMove( qboolean gravity, qboolean predictive )
return stepped;
}
- VectorCopy( pm->ps->origin, down_o );
- VectorCopy( pm->ps->velocity, down_v );
-
VectorCopy( start_o, up );
VectorMA( up, STEPSIZE, normal, up );
diff --git a/src/game/g_active.c b/src/game/g_active.c
index a6f246c..1dd27f4 100644
--- a/src/game/g_active.c
+++ b/src/game/g_active.c
@@ -574,8 +574,7 @@ void ClientTimerActions( gentity_t *ent, int msec )
usercmd_t *ucmd;
int aForward, aRight;
qboolean walking = qfalse, stopped = qfalse,
- crouched = qfalse, jumping = qfalse,
- strafing = qfalse;
+ crouched = qfalse;
ucmd = &ent->client->pers.cmd;
@@ -601,12 +600,7 @@ void ClientTimerActions( gentity_t *ent, int msec )
else if( aForward <= 64 && aRight <= 64 )
walking = qtrue;
- if( aRight > 0 )
- strafing = qtrue;
-
- if( ucmd->upmove > 0 )
- jumping = qtrue;
- else if( ent->client->ps.pm_flags & PMF_DUCKED )
+ if( ent->client->ps.pm_flags & PMF_DUCKED )
crouched = qtrue;
while ( client->time100 >= 100 )
diff --git a/src/game/g_admin.c b/src/game/g_admin.c
index de9f7fe..9ae3faf 100644
--- a/src/game/g_admin.c
+++ b/src/game/g_admin.c
@@ -704,7 +704,6 @@ void admin_writeconfig( void )
fileHandle_t f;
int len, i;
int t, expiretime;
- char levels[ MAX_STRING_CHARS ] = {""};
if( !g_admin.string[ 0 ] )
{
@@ -793,7 +792,6 @@ void admin_writeconfig( void )
}
for( i = 0; i < MAX_ADMIN_COMMANDS && g_admin_commands[ i ]; i++ )
{
- levels[ 0 ] = '\0';
trap_FS_Write( "[command]\n", 10, f );
trap_FS_Write( "command = ", 10, f );
admin_writeconfig_string( g_admin_commands[ i ]->command, f );
@@ -1187,7 +1185,7 @@ static int admin_listadmins( gentity_t *ent, int start, char *search, int minlev
{
G_DecolorString( g_admin_levels[ j ]->name, lname );
Com_sprintf( lname_fmt, sizeof( lname_fmt ), "%%%is",
- ( admin_level_maxname + strlen( g_admin_levels[ j ]->name )
+ (int)( admin_level_maxname + strlen( g_admin_levels[ j ]->name )
- strlen( lname ) ) );
Com_sprintf( lname, sizeof( lname ), lname_fmt,
g_admin_levels[ j ]->name );
@@ -1251,7 +1249,7 @@ static int admin_listadmins( gentity_t *ent, int start, char *search, int minlev
{
G_DecolorString( g_admin_levels[ j ]->name, lname );
Com_sprintf( lname_fmt, sizeof( lname_fmt ), "%%%is",
- ( admin_level_maxname + strlen( g_admin_levels[ j ]->name )
+ (int)( admin_level_maxname + strlen( g_admin_levels[ j ]->name )
- strlen( lname ) ) );
Com_sprintf( lname, sizeof( lname ), lname_fmt,
g_admin_levels[ j ]->name );
@@ -1995,9 +1993,8 @@ qboolean G_admin_readconfig( gentity_t *ent, int skiparg )
qboolean G_admin_time( gentity_t *ent, int skiparg )
{
qtime_t qt;
- int t;
- t = trap_RealTime( &qt );
+ trap_RealTime( &qt );
ADMP( va( "^3!time: ^7local time is %02i:%02i:%02i\n",
qt.tm_hour, qt.tm_min, qt.tm_sec ) );
@@ -3909,7 +3906,7 @@ qboolean G_admin_adminlog( gentity_t *ent, int skiparg )
t = results[ i ]->time / 1000;
G_DecolorString( results[ i ]->name, n1 );
Com_sprintf( fmt_name, sizeof( fmt_name ), "%%%ds",
- ( name_length + strlen( results[ i ]->name ) - strlen( n1 ) ) );
+ (int)( name_length + strlen( results[ i ]->name ) - strlen( n1 ) ) );
Com_sprintf( n1, sizeof( n1 ), fmt_name, results[ i ]->name );
Com_sprintf( levelbuf, sizeof( levelbuf ), "%2d", results[ i ]->level );
ADMBP( va( "%s%3d %3d:%02d %2s ^7%s^7 %s!%s ^7%s^7\n",
@@ -4329,7 +4326,6 @@ qboolean G_admin_mute( gentity_t *ent, int skiparg )
qboolean G_admin_cp( gentity_t *ent, int skiparg )
{
int minargc;
- char *s;
minargc = 2 + skiparg;
@@ -4339,7 +4335,6 @@ qboolean G_admin_cp( gentity_t *ent, int skiparg )
return qfalse;
}
- s = G_SayConcatArgs( 1 + skiparg );
G_CP(ent);
return qtrue;
}
@@ -5396,12 +5391,12 @@ qboolean G_admin_showbans( gentity_t *ent, int skiparg )
G_DecolorString( g_admin_bans[ i ]->name, n1 );
Com_sprintf( name_fmt, sizeof( name_fmt ), "%%%is",
- ( max_name + strlen( g_admin_bans[ i ]->name ) - strlen( n1 ) ) );
+ (int)( max_name + strlen( g_admin_bans[ i ]->name ) - strlen( n1 ) ) );
Com_sprintf( n1, sizeof( n1 ), name_fmt, g_admin_bans[ i ]->name );
G_DecolorString( g_admin_bans[ i ]->banner, n2 );
Com_sprintf( banner_fmt, sizeof( banner_fmt ), "%%%is",
- ( max_banner + strlen( g_admin_bans[ i ]->banner ) - strlen( n2 ) ) );
+ (int)( max_banner + strlen( g_admin_bans[ i ]->banner ) - strlen( n2 ) ) );
Com_sprintf( n2, sizeof( n2 ), banner_fmt, g_admin_bans[ i ]->banner );
bannerslevel = g_admin_bans[ i ]->bannerlevel;
@@ -5983,7 +5978,7 @@ qboolean G_admin_register(gentity_t *ent, int skiparg ){
return qfalse;
}
- trap_SendConsoleCommand( EXEC_APPEND,va( "!setlevel %d %d;",ent - g_entities, level) );
+ trap_SendConsoleCommand( EXEC_APPEND,va( "!setlevel %d %d;",(int)(ent - g_entities), level) );
AP( va( "print \"^3!register: ^7%s^7 is now a protected nickname.\n\"", ent->client->pers.netname) );
@@ -7077,7 +7072,7 @@ qboolean G_admin_revert( gentity_t *ent, int skiparg )
Com_sprintf( argbuf, sizeof argbuf, "%s%s%s%s%s%s%s!",
( repeat > 1 ) ? "x" : "", ( repeat > 1 ) ? va( "%d ", repeat ) : "",
( ID ) ? "#" : "", ( ID ) ? va( "%d ", ptr->ID ) : "",
- ( builder ) ? "-" : "", ( builder ) ? va( "%d ", builder - g_entities ) : "",
+ ( builder ) ? "-" : "", ( builder ) ? va( "%d ", (int)( builder - g_entities ) ) : "",
( team == PTE_ALIENS ) ? "a " : ( team == PTE_HUMANS ) ? "h " : "" );
ADMP( va( "^3!revert: ^7revert aborted: reverting this %s would conflict with "
"another buildable, use ^3!revert %s ^7to override\n", action, argbuf ) );
@@ -7132,7 +7127,7 @@ qboolean G_admin_revert( gentity_t *ent, int skiparg )
Com_sprintf( argbuf, sizeof argbuf, "%s%s%s%s%s%s%s!",
( repeat > 1 ) ? "x" : "", ( repeat > 1 ) ? va( "%d ", repeat ) : "",
( ID ) ? "#" : "", ( ID ) ? va( "%d ", ptr->ID ) : "",
- ( builder ) ? "-" : "", ( builder ) ? va( "%d ", builder - g_entities ) : "",
+ ( builder ) ? "-" : "", ( builder ) ? va( "%d ", (int)( builder - g_entities ) ) : "",
( team == PTE_ALIENS ) ? "a " : ( team == PTE_HUMANS ) ? "h " : "" );
ADMP( va( "^3!revert: ^7revert aborted: reverting this %s would "
"conflict with another buildable, use ^3!revert %s ^7to override\n",
@@ -7476,7 +7471,7 @@ qboolean G_admin_L0(gentity_t *ent, int skiparg ){
qboolean G_admin_L1(gentity_t *ent, int skiparg ){
int pids[ MAX_CLIENTS ];
- char name[ MAX_NAME_LENGTH ], *reason, err[ MAX_STRING_CHARS ];
+ char name[ MAX_NAME_LENGTH ], err[ MAX_STRING_CHARS ];
int minargc;
minargc = 2 + skiparg;
@@ -7487,7 +7482,6 @@ qboolean G_admin_L1(gentity_t *ent, int skiparg ){
return qfalse;
}
G_SayArgv( 1 + skiparg, name, sizeof( name ) );
- reason = G_SayConcatArgs( 2 + skiparg );
if( G_ClientNumbersFromString( name, pids ) != 1 )
{
G_MatchOnePlayer( pids, err, sizeof( err ) );
@@ -7535,12 +7529,9 @@ qboolean G_admin_invisible( gentity_t *ent, int skiparg )
qboolean G_admin_decon( gentity_t *ent, int skiparg )
{
- int i = 0, j = 0, repeat = 24, pids[ MAX_CLIENTS ], len, matchlen = 0;
- pTeam_t team = PTE_NONE;
- qboolean force = qfalse, reached = qfalse;
- gentity_t *builder = NULL, *targ;
- buildHistory_t *ptr, *tmp, *mark, *prev;
- vec3_t dist;
+ int repeat = 24, pids[ MAX_CLIENTS ], len, matchlen = 0;
+ gentity_t *builder = NULL;
+ buildHistory_t *ptr, *tmp, *prev;
char arg[ 64 ], err[ MAX_STRING_CHARS ], *name, *bname, *action, *article, *reason;
len = G_CountBuildLog( );
@@ -7578,7 +7569,7 @@ qboolean G_admin_decon( gentity_t *ent, int skiparg )
return qfalse;
}
- for( i = 0, ptr = prev = level.buildHistory; repeat > 0; repeat--, j = 0 )
+ for( ptr = prev = level.buildHistory; repeat > 0; repeat-- )
{
if( !ptr )
break;
@@ -7678,7 +7669,7 @@ qboolean G_admin_decon( gentity_t *ent, int skiparg )
admin_writeconfig();
trap_SendServerCommand( pids[ 0 ],
- va( "disconnect \"You have been kicked.\n%s^7\nreason:\n%s\n%s\"",
+ va( "disconnect \"You have been kicked.\n%s^7\nreason:\n%s\"",
( ent ) ? va( "admin:\n%s", G_admin_adminPrintName( ent ) ) : "admin\nconsole",
( *reason ) ? reason : "^1Decon" ) );
@@ -8526,7 +8517,7 @@ qboolean G_admin_switch( gentity_t *ent, int skiparg )
qboolean G_admin_drug( gentity_t *ent, int skiparg )
{
- int pids[ MAX_CLIENTS ], found;
+ int pids[ MAX_CLIENTS ];
char name[ MAX_NAME_LENGTH ], err[ MAX_STRING_CHARS ];
int minargc;
gentity_t *vic;
diff --git a/src/game/g_buildable.c b/src/game/g_buildable.c
index 30b9d20..c685606 100644
--- a/src/game/g_buildable.c
+++ b/src/game/g_buildable.c
@@ -3370,7 +3370,6 @@ itemBuildError_t G_CanBuild( gentity_t *ent, buildable_t buildable, int distance
qboolean invert;
int contents;
playerState_t *ps = &ent->client->ps;
- int buildPoints;
gentity_t *tmp;
itemBuildError_t tempReason;
@@ -3398,7 +3397,6 @@ itemBuildError_t G_CanBuild( gentity_t *ent, buildable_t buildable, int distance
reason = IBE_NORMAL;
contents = trap_PointContents( entity_origin, -1 );
- buildPoints = BG_FindBuildPointsForBuildable( buildable );
//check if we are near a nobuild marker, if so, can't build here...
for( i = 0; i < MAX_GENTITIES; i++ )
diff --git a/src/game/g_cmds.c b/src/game/g_cmds.c
index 764623b..a9e7daa 100644
--- a/src/game/g_cmds.c
+++ b/src/game/g_cmds.c
@@ -2374,9 +2374,10 @@ void Cmd_CallTeamVote_f( gentity_t *ent )
Q_CleanStr( name );
if( G_admin_permission( &g_entities[ clientNum ], ADMF_IMMUNITY ) )
{
- char reasonprint[ MAX_STRING_CHARS ] = "";
- if( reason[ 0 ] != '\0' )
- Com_sprintf(reasonprint, sizeof(reasonprint), "With reason: %s", reason);
+ char reasonprint[ MAX_STRING_CHARS ] = {0};
+
+ if( reason[ 0 ] != '\0' )
+ Com_sprintf(reasonprint, sizeof(reasonprint), "With reason: %s", reason);
Com_sprintf( message, sizeof( message ), "%s^7 attempted /callteamvote %s %s on immune admin %s^7 %s^7",
ent->client->pers.netname, arg1, arg2, g_entities[ clientNum ].client->pers.netname, reasonprint );
@@ -5043,8 +5044,7 @@ static void Cmd_Ignore_f( gentity_t *ent )
return;
}
- if( g_floodMinTime.integer )
- if ( G_Flood_Limited( ent ) )
+ if( g_floodMinTime.integer && G_Flood_Limited( ent ) )
{
trap_SendServerCommand( ent-g_entities, "print \"Your chat is flood-limited; wait before chatting again\n\"" );
return;
@@ -5607,7 +5607,7 @@ void G_PrivateMessage( gentity_t *ent )
matches,
color,
msg,
- ent ? ent-g_entities : -1 ) );
+ ent ? (int)(ent-g_entities) : -1 ) );
trap_SendServerCommand( pids[ i ], va(
"cp \"^%cprivate message from ^7%s^7\"", color,
diff --git a/src/game/g_combat.c b/src/game/g_combat.c
index 85880ef..aef76d1 100644
--- a/src/game/g_combat.c
+++ b/src/game/g_combat.c
@@ -1156,7 +1156,6 @@ void G_Damage( gentity_t *targ, gentity_t *inflictor, gentity_t *attacker,
{
gclient_t *client;
int take;
- int save;
int asave = 0;
int knockback = 0;
float damagemodifier=0.0;
@@ -1353,7 +1352,6 @@ void G_Damage( gentity_t *targ, gentity_t *inflictor, gentity_t *attacker,
}
take = damage;
- save = 0;
// add to the damage inflicted on a player this frame
// the total will be turned into screen blends and view angle kicks
diff --git a/src/game/g_local.h b/src/game/g_local.h
index b5e6e8c..ded4d63 100644
--- a/src/game/g_local.h
+++ b/src/game/g_local.h
@@ -1304,7 +1304,7 @@ connectionRecord_t *G_FindConnectionForCode( int code );
extern level_locals_t level;
extern gentity_t g_entities[ MAX_GENTITIES ];
-#define FOFS(x) ((int)&(((gentity_t *)0)->x))
+#define FOFS(x) ((intptr_t)&(((gentity_t *)0)->x))
extern vmCvar_t g_dedicated;
extern vmCvar_t g_cheats;
diff --git a/src/game/g_main.c b/src/game/g_main.c
index bffbdf7..9bf9b38 100644
--- a/src/game/g_main.c
+++ b/src/game/g_main.c
@@ -774,15 +774,13 @@ void G_InitGame( int levelTime, int randomSeed, int restart )
{
char serverinfo[ MAX_INFO_STRING ];
qtime_t qt;
- int t;
-
trap_GetServerinfo( serverinfo, sizeof( serverinfo ) );
G_LogPrintf( "------------------------------------------------------------\n" );
G_LogPrintf( "InitGame: %s\n", serverinfo );
- t = trap_RealTime( &qt );
+ trap_RealTime( &qt );
G_LogPrintf("RealTime: %04i/%02i/%02i %02i:%02i:%02i\n",
qt.tm_year+1900, qt.tm_mon+1, qt.tm_mday,
qt.tm_hour, qt.tm_min, qt.tm_sec );
@@ -2873,7 +2871,6 @@ void G_RunFrame( int levelTime )
int i;
gentity_t *ent;
int msec;
- int start, end;
// if we are waiting for the level to restart, do nothing
if( level.restarted )
@@ -2910,7 +2907,6 @@ void G_RunFrame( int levelTime )
//
// go through all allocated objects
//
- start = trap_Milliseconds( );
ent = &g_entities[ 0 ];
for( i = 0; i < level.num_entities; i++, ent++ )
@@ -2989,9 +2985,6 @@ void G_RunFrame( int levelTime )
G_RunThink( ent );
}
- end = trap_Milliseconds();
-
- start = trap_Milliseconds();
// perform final fixups on the players
ent = &g_entities[ 0 ];
@@ -3005,8 +2998,6 @@ void G_RunFrame( int levelTime )
// save position information for all active clients
G_UnlaggedStore( );
- end = trap_Milliseconds();
-
//TA:
G_CountSpawns( );
G_CalculateBuildPoints( );
diff --git a/src/game/g_maprotation.c b/src/game/g_maprotation.c
index a846c79..64822a2 100644
--- a/src/game/g_maprotation.c
+++ b/src/game/g_maprotation.c
@@ -1101,10 +1101,10 @@ static int G_GetMapVoteWinner( int *winvotes, int *totalvotes, int *resultorder
qboolean G_IntermissionMapVoteWinner( void )
{
- int winner, winvotes, totalvotes;
+ int winvotes, totalvotes;
int nonvotes;
- winner = G_GetMapVoteWinner( &winvotes, &totalvotes, NULL );
+ G_GetMapVoteWinner( &winvotes, &totalvotes, NULL );
if( winvotes * 2 > level.numConnectedClients )
return qtrue;
nonvotes = level.numConnectedClients - totalvotes;
diff --git a/src/game/g_session.c b/src/game/g_session.c
index ef78e8a..5fdf5b8 100644
--- a/src/game/g_session.c
+++ b/src/game/g_session.c
@@ -59,7 +59,7 @@ void G_WriteClientSessionData( gclient_t *client )
BG_ClientListString( &client->sess.ignoreList )
);
- var = va( "session%i", client - level.clients );
+ var = va( "session%i", (int)(client - level.clients) );
trap_Cvar_Set( var, s );
}
@@ -83,7 +83,7 @@ void G_ReadSessionData( gclient_t *client )
int restartTeam;
int invisible;
- var = va( "session%i", client - level.clients );
+ var = va( "session%i", (int)(client - level.clients) );
trap_Cvar_VariableStringBuffer( var, s, sizeof(s) );
// FIXME: should be using BG_ClientListParse() for ignoreList, but
diff --git a/src/game/g_weapon.c b/src/game/g_weapon.c
index 00e8eab..e50594a 100644
--- a/src/game/g_weapon.c
+++ b/src/game/g_weapon.c
@@ -451,11 +451,7 @@ LOCKBLOB
void lockBlobLauncherFire( gentity_t *ent )
{
- gentity_t *m;
-
- m = fire_lockblob( ent, muzzle, forward );
-
-// VectorAdd( m->s.pos.trDelta, ent->client->ps.velocity, m->s.pos.trDelta ); // "real" physics
+ fire_lockblob( ent, muzzle, forward );
}
/*
@@ -468,11 +464,7 @@ HIVE
void hiveFire( gentity_t *ent )
{
- gentity_t *m;
-
- m = fire_hive( ent, muzzle, forward );
-
-// VectorAdd( m->s.pos.trDelta, ent->client->ps.velocity, m->s.pos.trDelta ); // "real" physics
+ fire_hive( ent, muzzle, forward );
}
/*
@@ -485,11 +477,7 @@ BLASTER PISTOL
void blasterFire( gentity_t *ent )
{
- gentity_t *m;
-
- m = fire_blaster( ent, muzzle, forward );
-
-// VectorAdd( m->s.pos.trDelta, ent->client->ps.velocity, m->s.pos.trDelta ); // "real" physics
+ fire_blaster( ent, muzzle, forward );
}
/*
@@ -502,11 +490,7 @@ PULSE RIFLE
void pulseRifleFire( gentity_t *ent )
{
- gentity_t *m;
-
- m = fire_pulseRifle( ent, muzzle, forward );
-
-// VectorAdd( m->s.pos.trDelta, ent->client->ps.velocity, m->s.pos.trDelta ); // "real" physics
+ fire_pulseRifle( ent, muzzle, forward );
}
/*
@@ -519,9 +503,7 @@ FLAME THROWER
void flamerFire( gentity_t *ent )
{
- gentity_t *m;
-
- m = fire_flamer( ent, muzzle, forward );
+ fire_flamer( ent, muzzle, forward );
}
/*
@@ -534,9 +516,7 @@ GRENADE
void throwGrenade( gentity_t *ent )
{
- gentity_t *m;
-
- m = launch_grenade( ent, muzzle, forward );
+ launch_grenade( ent, muzzle, forward );
}
/*
@@ -666,17 +646,15 @@ LCChargeFire
*/
void LCChargeFire( gentity_t *ent, qboolean secondary )
{
- gentity_t *m;
-
if( secondary )
{
- m = fire_luciferCannon( ent, muzzle, forward, LCANNON_SECONDARY_DAMAGE,
+ fire_luciferCannon( ent, muzzle, forward, LCANNON_SECONDARY_DAMAGE,
LCANNON_SECONDARY_RADIUS );
ent->client->ps.weaponTime = LCANNON_REPEAT;
}
else
{
- m = fire_luciferCannon( ent, muzzle, forward, ent->client->ps.stats[ STAT_MISC ], LCANNON_RADIUS );
+ fire_luciferCannon( ent, muzzle, forward, ent->client->ps.stats[ STAT_MISC ], LCANNON_RADIUS );
ent->client->ps.weaponTime = LCANNON_CHARGEREPEAT;
}
@@ -856,11 +834,7 @@ void buildFire( gentity_t *ent, dynMenu_t menu )
void slowBlobFire( gentity_t *ent )
{
- gentity_t *m;
-
- m = fire_slowBlob( ent, muzzle, forward );
-
-// VectorAdd( m->s.pos.trDelta, ent->client->ps.velocity, m->s.pos.trDelta ); // "real" physics
+ fire_slowBlob( ent, muzzle, forward );
}
@@ -1421,11 +1395,7 @@ qboolean CheckPounceAttack( gentity_t *ent )
void bounceBallFire( gentity_t *ent )
{
- gentity_t *m;
-
- m = fire_bounceBall( ent, muzzle, forward );
-
-// VectorAdd( m->s.pos.trDelta, ent->client->ps.velocity, m->s.pos.trDelta ); // "real" physics
+ fire_bounceBall( ent, muzzle, forward );
}