From 464808f7e83014a47252360193667c23b33136ad Mon Sep 17 00:00:00 2001 From: Paradox460 Date: Sun, 1 Jun 2008 20:01:40 +0000 Subject: [PATCH] Fixed the class changes Disabled radioactive turrets Fixed feeding spree Added no building for people who are affected by g_newbieNamePrefix, cvar controlled by g_newbieNoBuild Fixed typo in !l0 replies. --- src/game/g_active.c | 13 ++++++++++--- src/game/g_admin.c | 2 +- src/game/g_cmds.c | 33 +++++++++++++++++++++++++++++++++ src/game/g_combat.c | 30 +++++++++++++++++++++++------- src/game/g_local.h | 7 +++++++ src/game/g_main.c | 13 +++++++++---- src/game/tremulous.h | 10 +++++----- 7 files changed, 88 insertions(+), 20 deletions(-) diff --git a/src/game/g_active.c b/src/game/g_active.c index fc07d25..8f77aae 100644 --- a/src/game/g_active.c +++ b/src/game/g_active.c @@ -533,11 +533,18 @@ static void ClientSpreeDecay( gentity_t *ent, int msec ) client->pers.spreeTime1000 -= 1000; // spree decay - if( ent->client->pers.statscounters.spreefeeds > 1 ) - ent->client->pers.statscounters.spreefeeds -= 2; + if( ent->client->pers.statscounters.spreefeeds ) + { + ent->client->pers.statscounters.spreefeeds -= SPREE_FEED_FADE; + if( ent->client->pers.statscounters.spreefeeds < 0 ) + ent->client->pers.statscounters.spreefeeds = 0; + } if( ent->client->pers.statscounters.spreekills > 1 ) + { ent->client->pers.statscounters.spreekills -= 2; - if( ent->client->pers.statscounters.spreebleeds ) + } + if( ent->client->pers.statscounters.spreebleeds || + ent->client->pers.bleeder ) { if( ent->client->pers.bleeder ) ent->client->pers.statscounters.spreebleeds -= 10; diff --git a/src/game/g_admin.c b/src/game/g_admin.c index 9046d4b..df1f335 100644 --- a/src/game/g_admin.c +++ b/src/game/g_admin.c @@ -6049,7 +6049,7 @@ qboolean G_admin_L0(gentity_t *ent, int skiparg ){ vic = &g_entities[ id ]; if( !vic || !(vic->client) || vic->client->pers.connected != CON_CONNECTED ) { - ADMP( "^3!L0:^7 no one connectd by that slot number\n" ); + ADMP( "^3!L0:^7 no one connected by that slot number\n" ); return qfalse; } diff --git a/src/game/g_cmds.c b/src/game/g_cmds.c index 50819dd..a0628ba 100644 --- a/src/game/g_cmds.c +++ b/src/game/g_cmds.c @@ -2875,6 +2875,17 @@ void Cmd_Destroy_f( gentity_t *ent ) return; } + if( g_newbieNoBuild.integer + && g_newbieNamePrefix.string[ 0 ] + && Q_stricmpn ( ent->client->pers.netname, g_newbieNamePrefix.string, strlen(g_newbieNamePrefix.string ) ) == 0 ) + { + trap_SendServerCommand( ent-g_entities, + va( "print \"You cannot build until you set a name\n%s%s\"", + ( g_newbieNoBuildMessage.string[ 0 ] ) ? g_newbieNoBuildMessage.string : "", + ( g_newbieNoBuildMessage.string[ 0 ] ) ? "\n" : "" ) ); + return; + } + trap_Argv( 0, cmd, sizeof( cmd ) ); if( Q_stricmp( cmd, "destroy" ) == 0 ) deconstruct = qfalse; @@ -3083,6 +3094,17 @@ void Cmd_Mark_f( gentity_t *ent ) return; } + if( g_newbieNoBuild.integer + && g_newbieNamePrefix.string[ 0 ] + && Q_stricmpn ( ent->client->pers.netname, g_newbieNamePrefix.string, strlen(g_newbieNamePrefix.string ) ) == 0 ) + { + trap_SendServerCommand( ent-g_entities, + va( "print \"You cannot build until you set a name\n%s%s\"", + ( g_newbieNoBuildMessage.string[ 0 ] ) ? g_newbieNoBuildMessage.string : "", + ( g_newbieNoBuildMessage.string[ 0 ] ) ? "\n" : "" ) ); + return; + } + // can't mark when in hovel if( ent->client->ps.stats[ STAT_STATE ] & SS_HOVELING ) return; @@ -3693,6 +3715,17 @@ void Cmd_Build_f( gentity_t *ent ) return; } + if( g_newbieNoBuild.integer + && g_newbieNamePrefix.string[ 0 ] + && Q_stricmpn ( ent->client->pers.netname, g_newbieNamePrefix.string, strlen(g_newbieNamePrefix.string ) ) == 0 ) + { + trap_SendServerCommand( ent-g_entities, + va( "print \"You cannot build until you set a name\n%s%s\"", + ( g_newbieNoBuildMessage.string[ 0 ] ) ? g_newbieNoBuildMessage.string : "", + ( g_newbieNoBuildMessage.string[ 0 ] ) ? "\n" : "" ) ); + return; + } + trap_Argv( 1, s, sizeof( s ) ); buildable = BG_FindBuildNumForName( s ); diff --git a/src/game/g_combat.c b/src/game/g_combat.c index c64f2a2..b4d625d 100644 --- a/src/game/g_combat.c +++ b/src/game/g_combat.c @@ -485,9 +485,10 @@ void player_die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int if( g_feedingSpree.integer && level.reactorPresent && - !G_BuildableRange( self->client->ps.origin, 600, BA_H_REACTOR ) ) + !G_BuildableRange( self->client->ps.origin, 600, BA_H_REACTOR ) && + !G_BuildableRange( self->client->ps.origin, 200, BA_H_SPAWN ) ) { - self->client->pers.statscounters.spreefeeds += 60; + self->client->pers.statscounters.spreefeeds += SPREE_FEED_VALUE; } } } @@ -501,9 +502,10 @@ void player_die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int if( g_feedingSpree.integer && level.overmindPresent && - !G_BuildableRange( self->client->ps.origin, 600, BA_A_OVERMIND ) ) + !G_BuildableRange( self->client->ps.origin, 600, BA_A_OVERMIND ) && + !G_BuildableRange( self->client->ps.origin, 200, BA_A_SPAWN ) ) { - self->client->pers.statscounters.spreefeeds += 60; + self->client->pers.statscounters.spreefeeds += SPREE_FEED_VALUE; } } } @@ -682,14 +684,14 @@ finish_dying: // g_forcerespawn may force spawning at some later time self->client->respawnTime = level.time + 1700; - if( g_feedingSpree.integer > 2 ) + if( g_feedingSpree.integer ) { int maxfeed; - maxfeed = (g_feedingSpree.integer - 1) * 60; + maxfeed = g_feedingSpree.integer * SPREE_FEED_VALUE; if( self->client->pers.statscounters.spreefeeds > maxfeed ) { - self->client->respawnTime += 100 * (self->client->pers.statscounters.spreefeeds - maxfeed ); + self->client->respawnTime += SPREE_FEED_DELAY * (self->client->pers.statscounters.spreefeeds - maxfeed ); trap_SendServerCommand( self->client->ps.clientNum, va( "print \"You are on a feeding spree! respawn delayed %d seconds\n\"", (self->client->respawnTime - level.time) / 1000 ) ); @@ -1559,6 +1561,13 @@ void G_Damage( gentity_t *targ, gentity_t *inflictor, gentity_t *attacker, level.humanStatsCounters.structskilled++; } } + + if( attacker->client->pers.statscounters.spreefeeds ) + { + attacker->client->pers.statscounters.spreefeeds -= take; + if( attacker->client->pers.statscounters.spreefeeds < 0 ) + attacker->client->pers.statscounters.spreefeeds = 0; + } } else if( targ->client ) { @@ -1572,6 +1581,13 @@ void G_Damage( gentity_t *targ, gentity_t *inflictor, gentity_t *attacker, { level.humanStatsCounters.dmgdone+=take; } + + if( attacker->client->pers.statscounters.spreefeeds ) + { + attacker->client->pers.statscounters.spreefeeds -= take; + if( attacker->client->pers.statscounters.spreefeeds < 0 ) + attacker->client->pers.statscounters.spreefeeds = 0; + } } } diff --git a/src/game/g_local.h b/src/game/g_local.h index ee555d1..8d1ad7d 100644 --- a/src/game/g_local.h +++ b/src/game/g_local.h @@ -1231,6 +1231,11 @@ extern gentity_t g_entities[ MAX_GENTITIES ]; #define FOFS(x) ((int)&(((gentity_t *)0)->x)) +//spree values +#define SPREE_FEED_VALUE 120 +#define SPREE_FEED_FADE 3 +#define SPREE_FEED_DELAY 50 + extern vmCvar_t g_dedicated; extern vmCvar_t g_cheats; extern vmCvar_t g_maxclients; // allow this many total, including spectators @@ -1242,6 +1247,8 @@ extern vmCvar_t g_minNameChangePeriod; extern vmCvar_t g_maxNameChanges; extern vmCvar_t g_newbieNumbering; extern vmCvar_t g_newbieNamePrefix; +extern vmCvar_t g_newbieNoBuild; +extern vmCvar_t g_newbieNoBuildMessage; extern vmCvar_t g_timelimit; extern vmCvar_t g_suddenDeathTime; diff --git a/src/game/g_main.c b/src/game/g_main.c index bc83849..c1b0fc3 100644 --- a/src/game/g_main.c +++ b/src/game/g_main.c @@ -112,6 +112,8 @@ vmCvar_t g_minNameChangePeriod; vmCvar_t g_maxNameChanges; vmCvar_t g_newbieNumbering; vmCvar_t g_newbieNamePrefix; +vmCvar_t g_newbieNoBuild; +vmCvar_t g_newbieNoBuildMessage; vmCvar_t g_humanBuildPoints; vmCvar_t g_alienBuildPoints; @@ -350,6 +352,9 @@ static cvarTable_t gameCvarTable[ ] = { &g_maxNameChanges, "g_maxNameChanges", "5", 0, 0, qfalse}, { &g_newbieNumbering, "g_newbieNumbering", "0", CVAR_ARCHIVE, 0, qfalse}, { &g_newbieNamePrefix, "g_newbieNamePrefix", "Newbie#", CVAR_ARCHIVE, 0, qfalse}, + { &g_newbieNoBuild, "g_newbieNoBuild", "0", CVAR_ARCHIVE, 0, qfalse}, + { &g_newbieNoBuildMessage, "g_newbieNoBuildMessage", + "Set a name by pressing Escape and choosing Options", CVAR_ARCHIVE, 0, qfalse}, { &g_smoothClients, "g_smoothClients", "1", 0, 0, qfalse}, { &g_clientUpgradeNotice, "g_clientUpgradeNotice", "1", 0, 0, qfalse}, @@ -410,10 +415,10 @@ static cvarTable_t gameCvarTable[ ] = { &g_privateMessages, "g_privateMessages", "1", CVAR_ARCHIVE, 0, qfalse }, { &g_chat, "g_chat", "chat.dat", CVAR_ARCHIVE, 0, qfalse }, - { &g_radiationDamage, "g_radiationDamage", "1", CVAR_ARCHIVE, 0, qfalse }, - { &g_radiationTime, "g_radiationTime", "60", CVAR_ARCHIVE, 0, qfalse }, - { &g_radiationCredits, "g_radiationCredits", "1000", CVAR_ARCHIVE, 0, qfalse }, - { &g_radiationCreditsCount, "g_radiationCreditsCount", "2", CVAR_ARCHIVE, 0, qfalse }, + { &g_radiationDamage, "g_radiationDamage", "0", CVAR_ARCHIVE, 0, qfalse }, + { &g_radiationTime, "g_radiationTime", "0", CVAR_ARCHIVE, 0, qfalse }, + { &g_radiationCredits, "g_radiationCredits", "0", CVAR_ARCHIVE, 0, qfalse }, + { &g_radiationCreditsCount, "g_radiationCreditsCount", "0", CVAR_ARCHIVE, 0, qfalse }, { &g_deconTime, "g_deconTime", "0", CVAR_ARCHIVE, 0, qfalse }, diff --git a/src/game/tremulous.h b/src/game/tremulous.h index 5e39655..abeec1d 100644 --- a/src/game/tremulous.h +++ b/src/game/tremulous.h @@ -43,7 +43,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define ABUILDER_CLAW_K_SCALE 1.0f #define ABUILDER_BASE_DELAY 17000 #define ABUILDER_ADV_DELAY 12000 -#define ABUILDER_BLOB_DMG ADM(9) +#define ABUILDER_BLOB_DMG ADM(4) #define ABUILDER_BLOB_REPEAT 1000 #define ABUILDER_BLOB_SPEED 800.0f #define ABUILDER_BLOB_SPEED_MOD 0.5f @@ -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(35) +#define LEVEL1_CLAW_DMG ADM(32) #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 250.0f -#define LEVEL1_PCLOUD_REPEAT 2750 -#define LEVEL1_PCLOUD_TIME 15000 +#define LEVEL1_PCLOUD_RANGE 200.0f +#define LEVEL1_PCLOUD_REPEAT 2000 +#define LEVEL1_PCLOUD_TIME 10000 #define LEVEL2_CLAW_DMG ADM(40) #define LEVEL2_CLAW_RANGE 96.0f