diff --git a/src/game/g_local.h b/src/game/g_local.h index 5ce3861..3548540 100644 --- a/src/game/g_local.h +++ b/src/game/g_local.h @@ -242,6 +242,7 @@ struct gentity_s int lastDamageTime; int bdnumb; // buildlog entry ID + int livetime; }; typedef enum @@ -1257,6 +1258,7 @@ extern vmCvar_t g_warmup; extern vmCvar_t g_doWarmup; extern vmCvar_t g_proximityMines; extern vmCvar_t g_proximityMinesPrice; +extern vmCvar_t g_proximityMinesLiveTime; extern vmCvar_t g_blood; extern vmCvar_t g_allowVote; extern vmCvar_t g_voteLimit; diff --git a/src/game/g_main.c b/src/game/g_main.c index 07f5ba0..474090f 100644 --- a/src/game/g_main.c +++ b/src/game/g_main.c @@ -74,6 +74,7 @@ vmCvar_t g_warmup; vmCvar_t g_doWarmup; vmCvar_t g_proximityMines; vmCvar_t g_proximityMinesPrice; +vmCvar_t g_proximityMinesLiveTime; vmCvar_t g_restarted; vmCvar_t g_lockTeamsAtStart; vmCvar_t g_logFile; @@ -269,6 +270,7 @@ static cvarTable_t gameCvarTable[ ] = { &g_proximityMines, "g_proximityMines", "0", 0, 0, qtrue }, { &g_proximityMinesPrice, "g_proximityMinesPrice", "800", 0, 0, qtrue }, + { &g_proximityMinesLiveTime, "g_proximityMinesLiveTime", "60000", 0, 0, qtrue }, { &g_teamAutoJoin, "g_teamAutoJoin", "0", CVAR_ARCHIVE }, { &g_teamForceBalance, "g_teamForceBalance", "1", CVAR_ARCHIVE }, { &g_buyAll, "g_buyAll", "0", CVAR_ARCHIVE, 0, qtrue }, diff --git a/src/game/g_missile.c b/src/game/g_missile.c index 0580d1f..edc5eb2 100644 --- a/src/game/g_missile.c +++ b/src/game/g_missile.c @@ -111,10 +111,18 @@ void G_ProcessProximityMine(gentity_t *ent) { int i, total_entities, entityList[MAX_GENTITIES]; vec3_t range, mins, maxs; gentity_t *target; + // Set the next time to run this check (can be overwritten below) ent->nextthink = level.time + PROXIMITY_CHECK_FREQUENCY; + if( g_proximityMinesLiveTime.integer != -1 && ent->livetime + PROXIMITY_CHECK_FREQUENCY == level.time ) + { + ent->nextthink = level.time; + ent->think = G_ExplodeMissile; + return; + } + // Grab all entities around us VectorSet(range, PROXIMITY_RANGE, PROXIMITY_RANGE, PROXIMITY_RANGE); VectorAdd(ent->s.origin, range, maxs); @@ -531,6 +539,7 @@ gentity_t *launch_grenade( gentity_t *self, vec3_t start, vec3_t dir ) if(g_proximityMines.integer) { bolt->nextthink = level.time + PROXIMITY_INIT_TIME; bolt->think = G_ProcessProximityMine; + bolt->livetime = level.time + g_proximityMinesLiveTime.integer; } else { bolt->nextthink = level.time + 5000; bolt->think = G_ExplodeMissile; diff --git a/src/game/tremulous.h b/src/game/tremulous.h index 259da58..f9d8dc8 100644 --- a/src/game/tremulous.h +++ b/src/game/tremulous.h @@ -55,7 +55,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define LEVEL0_BITE_REPEAT 500 #define LEVEL0_BITE_K_SCALE 1.0f -#define LEVEL1_CLAW_DMG ADM(32) +#define LEVEL1_CLAW_DMG ADM(35) #define LEVEL1_CLAW_RANGE 96.0f #define LEVEL1_CLAW_WIDTH 10.0f #define LEVEL1_CLAW_REPEAT 600 @@ -66,9 +66,9 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define LEVEL1_GRAB_TIME 300 #define LEVEL1_GRAB_U_TIME 450 #define LEVEL1_PCLOUD_DMG ADM(4) -#define LEVEL1_PCLOUD_RANGE 200.0f -#define LEVEL1_PCLOUD_REPEAT 2000 -#define LEVEL1_PCLOUD_TIME 10000 +#define LEVEL1_PCLOUD_RANGE 250.0f +#define LEVEL1_PCLOUD_REPEAT 2750 +#define LEVEL1_PCLOUD_TIME 15000 #define LEVEL2_CLAW_DMG ADM(40) #define LEVEL2_CLAW_RANGE 96.0f @@ -157,13 +157,13 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define LEVEL1_SPEED 1.25f #define LEVEL1_VALUE AVM(225) -#define LEVEL1_HEALTH AHM(75) +#define LEVEL1_HEALTH AHM(90) #define LEVEL1_REGEN 2 #define LEVEL1_COST 1 #define LEVEL1_UPG_SPEED 1.25f #define LEVEL1_UPG_VALUE AVM(275) -#define LEVEL1_UPG_HEALTH AHM(100) +#define LEVEL1_UPG_HEALTH AHM(115) #define LEVEL1_UPG_REGEN 3 #define LEVEL1_UPG_COST 1