From cbae441da731ca7d6e8657768bf6d2ea0bd3dd0f Mon Sep 17 00:00:00 2001 From: sealscarl <60446962+sealscarl@users.noreply.github.com> Date: Tue, 20 Jan 2026 14:26:41 -0600 Subject: [PATCH 1/2] update nail travel duration client side --- code/cgame/cg_q3f_grenades.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/cgame/cg_q3f_grenades.c b/code/cgame/cg_q3f_grenades.c index 6782eb2..5319848 100644 --- a/code/cgame/cg_q3f_grenades.c +++ b/code/cgame/cg_q3f_grenades.c @@ -335,11 +335,11 @@ static int NailEndTime( struct gnail *nail, float zpos, int parentnum ) end[0] = nail->xvel; end[1] = nail->yvel; end[2] = 0; - VectorScale( end, 20000 * Q3F_NAILSPEED / 1000 , end ); // 20 seconds travel + VectorScale( end, 500 * Q3F_NAILSPEED / 1000 , end ); // 20 seconds travel - Default; Tulkas - adjusted to 1 second travel duration to reduce nail spam VectorAdd( start, end, end ); CG_Trace( &tr, start, NULL, NULL, end, parentnum, MASK_SHOT ); - return( nail->starttime + 20000 * tr.fraction ); + return( nail->starttime + 500 * tr.fraction ); } static int InitNailArray( centity_t *cent ) From 3a67049642905340f55f2ab4a1837da78e6a5943 Mon Sep 17 00:00:00 2001 From: sealscarl <60446962+sealscarl@users.noreply.github.com> Date: Tue, 20 Jan 2026 14:27:44 -0600 Subject: [PATCH 2/2] destroy nail server side destroy nail after set duration server side --- code/game/g_q3f_grenades.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/code/game/g_q3f_grenades.c b/code/game/g_q3f_grenades.c index c3de1cd..1d3072c 100644 --- a/code/game/g_q3f_grenades.c +++ b/code/game/g_q3f_grenades.c @@ -915,6 +915,12 @@ static void NailThink( gentity_t *grenade ) ptr = array + index; if( !ptr->starttime || ptr->starttime > level.time ) continue; + if( level.time - ptr->starttime >= 500 ) + { + ptr->starttime = 0; // expire nail + *(bitptr + (index>>3)) &= ~(1<<(index&7)); // tell client it's gone + continue; + } start[0] = ptr->xpos; start[1] = ptr->ypos; start[2] = grenade->r.currentOrigin[2];