summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/g_active.c47
-rw-r--r--src/game/g_client.c2
-rw-r--r--src/game/g_combat.c2
-rw-r--r--src/game/g_main.c2
4 files changed, 40 insertions, 13 deletions
diff --git a/src/game/g_active.c b/src/game/g_active.c
index e909ca6..ec92c97 100644
--- a/src/game/g_active.c
+++ b/src/game/g_active.c
@@ -1534,6 +1534,42 @@ static void G_UnlaggedDetectCollisions( gentity_t *ent )
/*
==============
+ClientGradualFunds
+
+g_gradualFreeFunds values:
+0 - disabled
+1 - vanilla behavior
+2 - 1 and counters don't reset on death or evolution
+3 - 2 and funds are given even during SD
+==============
+*/
+static void ClientGradualFunds( gentity_t *ent )
+{
+ if( !g_gradualFreeFunds.integer )
+ return;
+
+ if( ent->client->pers.lastFreekillTime + FREEKILL_PERIOD >= level.time )
+ return;
+
+ if( g_suddenDeath.integer && g_gradualFreeFunds.integer < 3 )
+ return;
+
+ switch ( ent->client->ps.stats[ STAT_PTEAM ] )
+ {
+ case PTE_ALIENS:
+ G_AddCreditToClient( ent->client, FREEKILL_ALIEN, qtrue );
+ break;
+
+ case PTE_HUMANS:
+ G_AddCreditToClient( ent->client, FREEKILL_HUMAN, qtrue );
+ break;
+ }
+
+ ent->client->pers.lastFreekillTime += FREEKILL_PERIOD;
+}
+
+/*
+==============
ClientThink
This will be called once for each client frame, which will
@@ -1989,16 +2025,7 @@ void ClientThink_real( gentity_t *ent )
}
// Give clients some credit periodically
- if( ent->client->pers.lastFreekillTime + FREEKILL_PERIOD < level.time )
- {
- if( !g_suddenDeath.integer || g_gradualFreeFunds.integer ) {
- if( ent->client->ps.stats[ STAT_PTEAM ] == PTE_ALIENS )
- G_AddCreditToClient( ent->client, FREEKILL_ALIEN, qtrue );
- if( ent->client->ps.stats[ STAT_PTEAM ] == PTE_HUMANS )
- G_AddCreditToClient( ent->client, FREEKILL_HUMAN, qtrue );
- }
- ent->client->pers.lastFreekillTime += FREEKILL_PERIOD;
- }
+ ClientGradualFunds( ent );
// perform once-a-second actions
ClientTimerActions( ent, msec );
diff --git a/src/game/g_client.c b/src/game/g_client.c
index 54c05df..d36b237 100644
--- a/src/game/g_client.c
+++ b/src/game/g_client.c
@@ -1950,7 +1950,7 @@ void ClientSpawn( gentity_t *ent, gentity_t *spawn, vec3_t origin, vec3_t angles
client->ps.pm_time = 100;
client->respawnTime = level.time;
- if( !g_gradualFreeFunds.integer )
+ if( g_gradualFreeFunds.integer < 2 )
client->pers.lastFreekillTime = level.time;
client->inactivityTime = level.time + g_inactivity.integer * 1000;
diff --git a/src/game/g_combat.c b/src/game/g_combat.c
index 4cf2722..c781959 100644
--- a/src/game/g_combat.c
+++ b/src/game/g_combat.c
@@ -288,7 +288,7 @@ void player_die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int
{
AddScore( attacker, 1 );
- if( !g_gradualFreeFunds.integer )
+ if( g_gradualFreeFunds.integer < 2 )
attacker->client->pers.lastFreekillTime = level.time;
attacker->client->pers.statscounters.kills++;
attacker->client->pers.karma += 50;
diff --git a/src/game/g_main.c b/src/game/g_main.c
index 5f6bed8..814224d 100644
--- a/src/game/g_main.c
+++ b/src/game/g_main.c
@@ -425,7 +425,7 @@ static cvarTable_t gameCvarTable[ ] =
{ &g_buildPointsRecoverRate, "g_buildPointsRecoverRate", "0", CVAR_ARCHIVE, 0, qfalse },
{ &g_dynamicBuildPoints, "g_dynamicBuildPoints", "0", CVAR_ARCHIVE, 0, qfalse },
{ &g_instantBuild, "g_instantBuild", "0", CVAR_ARCHIVE, 0, qfalse },
- { &g_gradualFreeFunds, "g_gradualFreeFunds", "1", CVAR_ARCHIVE, 0, qtrue },
+ { &g_gradualFreeFunds, "g_gradualFreeFunds", "2", CVAR_ARCHIVE, 0, qtrue },
{ &g_chatTeamPrefix, "g_chatTeamPrefix", "1", CVAR_ARCHIVE },
{ &g_sayAreaRange, "g_sayAreaRange", "1000", CVAR_ARCHIVE, 0, qtrue },