From 5b338afa44341ea65121307a54652d5c3bcd1d4b Mon Sep 17 00:00:00 2001 From: Richard Allen Date: Wed, 28 Aug 2002 23:10:06 +0000 Subject: [PATCH] Added cg_RQ3_SuicideLikeARealMan, timestamping to server logs and fixed stats for non-TP modes. --- reaction/ChangeLog | 4 ++++ reaction/cgame/cg_local.h | 5 +++++ reaction/cgame/cg_main.c | 10 ++++++++-- reaction/game/g_client.c | 13 ++++++++++++- reaction/game/g_combat.c | 21 ++++++++++++--------- reaction/game/g_local.h | 5 +++++ reaction/game/g_main.c | 32 ++++++++++++++++++++++---------- reaction/game/g_missile.c | 26 ++++++++++++++++++-------- reaction/game/g_weapon.c | 24 ++++++++++++++---------- 9 files changed, 100 insertions(+), 40 deletions(-) diff --git a/reaction/ChangeLog b/reaction/ChangeLog index 5e9fb9d7..65f0aea3 100644 --- a/reaction/ChangeLog +++ b/reaction/ChangeLog @@ -58,6 +58,10 @@ * Players can now use the kill cmd, plummet and kill teammates after rounds in tp without loosing frags. * Fixed message for players wearing a kevlar vest and get hiot by weapons other than the SSG * Added the Keanu male radio soundset. +* Added a clientside cvar (cg_RQ3_SuicideLikeARealMan) to control frag lossage on suicides +* Fixed stats for non-TP gametypes +* Cleaned up server logging and added real timestamping to them. + # List fixes here for the 2.1 release diff --git a/reaction/cgame/cg_local.h b/reaction/cgame/cg_local.h index f153857f..d477e09e 100644 --- a/reaction/cgame/cg_local.h +++ b/reaction/cgame/cg_local.h @@ -5,6 +5,10 @@ //----------------------------------------------------------------------------- // // $Log$ +// Revision 1.122 2002/08/28 23:10:06 jbravo +// Added cg_RQ3_SuicideLikeARealMan, timestamping to server logs and +// fixed stats for non-TP modes. +// // Revision 1.121 2002/08/28 18:52:09 jbravo // Added the Keanu male radio sound set. // @@ -1679,6 +1683,7 @@ extern vmCvar_t cg_RQ3_overlaycrosshair; extern vmCvar_t cg_RQ3_tkokAutoPopup; extern vmCvar_t cg_RQ3_radiovoice_male; extern vmCvar_t cg_RQ3_radiovoice_female; +extern vmCvar_t cg_RQ3_SuicideLikeARealMan; extern vmCvar_t cg_RQ3_dynamicRadio; // Slicer: for the Anti-Cheat System diff --git a/reaction/cgame/cg_main.c b/reaction/cgame/cg_main.c index 64b9b166..755b170d 100644 --- a/reaction/cgame/cg_main.c +++ b/reaction/cgame/cg_main.c @@ -5,6 +5,10 @@ //----------------------------------------------------------------------------- // // $Log$ +// Revision 1.106 2002/08/28 23:10:06 jbravo +// Added cg_RQ3_SuicideLikeARealMan, timestamping to server logs and +// fixed stats for non-TP modes. +// // Revision 1.105 2002/08/28 18:52:09 jbravo // Added the Keanu male radio sound set. // @@ -399,6 +403,7 @@ vmCvar_t cg_RQ3_tkokAutoPopup; // JBravo: radio cvars. vmCvar_t cg_RQ3_radiovoice_male; vmCvar_t cg_RQ3_radiovoice_female; +vmCvar_t cg_RQ3_SuicideLikeARealMan; vmCvar_t cg_RQ3_dynamicRadio; // Slicer: for the Anti-Cheat System @@ -645,8 +650,8 @@ static cvarTable_t cvarTable[] = { // bk001129 {&cg_RQ3_ssgColorG, "cg_RQ3_ssgColorG", "1.0", CVAR_ARCHIVE}, {&cg_RQ3_ssgColorB, "cg_RQ3_ssgColorB", "0.0", CVAR_ARCHIVE}, {&cg_RQ3_ssgColorA, "cg_RQ3_ssgColorA", "0.75", CVAR_ARCHIVE}, - //Blaze: allow regular crosshair to be overlaid ontop of the ssg crosshair - {&cg_RQ3_overlaycrosshair, "cg_RQ3_overlaycrosshair", "0", CVAR_ARCHIVE}, +//Blaze: allow regular crosshair to be overlaid ontop of the ssg crosshair + {&cg_RQ3_overlaycrosshair, "cg_RQ3_overlaycrosshair", "0", CVAR_ARCHIVE}, // JBravo: cvars for regular crosshairs and their colors // Makro - changed default color to white; it was 0/1/0/.75 before @@ -657,6 +662,7 @@ static cvarTable_t cvarTable[] = { // bk001129 {&cg_RQ3_tkokAutoPopup, "cg_RQ3_tkokAutoPopup", "0", CVAR_ARCHIVE}, {&cg_RQ3_radiovoice_male, "cg_RQ3_radiovoice_male", "1", CVAR_USERINFO | CVAR_ARCHIVE}, {&cg_RQ3_radiovoice_female, "cg_RQ3_radiovoice_female", "1", CVAR_USERINFO | CVAR_ARCHIVE}, + {&cg_RQ3_SuicideLikeARealMan, "cg_RQ3_SuicideLikeARealMan", "0", CVAR_USERINFO | CVAR_ARCHIVE}, {&cg_RQ3_dynamicRadio, "cg_RQ3_dynamicRadio", "1", CVAR_ARCHIVE}, {&cg_RQ3_impactEffects, "cg_RQ3_impactEffects", "1", CVAR_ARCHIVE}, {&cg_RQ3_laserAssist, "cg_RQ3_laserAssist", "0", CVAR_ARCHIVE}, diff --git a/reaction/game/g_client.c b/reaction/game/g_client.c index 09a6fdc1..be6a99ce 100644 --- a/reaction/game/g_client.c +++ b/reaction/game/g_client.c @@ -5,6 +5,10 @@ //----------------------------------------------------------------------------- // // $Log$ +// Revision 1.113 2002/08/28 23:10:06 jbravo +// Added cg_RQ3_SuicideLikeARealMan, timestamping to server logs and +// fixed stats for non-TP modes. +// // Revision 1.112 2002/08/23 14:25:05 slicer // Added a new Referee System with multiple ref support // @@ -1129,7 +1133,14 @@ void ClientUserinfoChanged(int clientNum) } else { client->radioSetFemale = atoi(s); } - + // JBravo: Does the client get a frag reduced on suicides or not. + s = Info_ValueForKey(userinfo, "cg_RQ3_SuicideLikeARealMan"); + if (!atoi(s)) { + client->SuicideLikeARealMan = 0; + } else { + client->SuicideLikeARealMan = atoi(s); + } + if (g_gametype.integer == GT_TEAMPLAY || g_gametype.integer == GT_CTF) { if (client->sess.sessionTeam == TEAM_RED) { Q_strncpyz(model2, g_RQ3_team1model.string, sizeof(model)); diff --git a/reaction/game/g_combat.c b/reaction/game/g_combat.c index 2104d46f..fa106aeb 100644 --- a/reaction/game/g_combat.c +++ b/reaction/game/g_combat.c @@ -5,6 +5,10 @@ //----------------------------------------------------------------------------- // // $Log$ +// Revision 1.124 2002/08/28 23:10:06 jbravo +// Added cg_RQ3_SuicideLikeARealMan, timestamping to server logs and +// fixed stats for non-TP modes. +// // Revision 1.123 2002/08/27 11:28:43 jbravo // Kevlar hits didnt tell the target who was shooting or of the kevlar got hit // @@ -684,7 +688,7 @@ void SendObit(char *msg, gentity_t * deadguy, gentity_t * attacker) int i; gentity_t *other; - if (g_gametype.integer < GT_TEAM) { + if (g_gametype.integer != GT_TEAMPLAY) { trap_SendServerCommand(-1, va("print \"%s\"", msg)); } else { if (g_RQ3_showOwnKills.integer == 0) { @@ -1183,7 +1187,7 @@ void player_die(gentity_t * self, gentity_t * inflictor, gentity_t * attacker, i if ((self->client->lasthurt_location & LOCATION_HEAD) == LOCATION_HEAD || (self->client->lasthurt_location & LOCATION_FACE) == LOCATION_FACE) { // head kill - if (level.team_round_going) { + if ((g_gametype.integer == GT_TEAMPLAY && level.team_round_going) || g_gametype.integer != GT_TEAMPLAY) { self->client->pers.records[REC_HEADDEATHS]++; if (attacker && attacker->client) attacker->client->pers.records[REC_HEADKILLS]++; @@ -1193,7 +1197,7 @@ void player_die(gentity_t * self, gentity_t * inflictor, gentity_t * attacker, i } else if ((self->client->lasthurt_location & LOCATION_CHEST) == LOCATION_CHEST || (self->client->lasthurt_location & LOCATION_SHOULDER) == LOCATION_SHOULDER) { // chest kill - if (level.team_round_going) { + if ((g_gametype.integer == GT_TEAMPLAY && level.team_round_going) || g_gametype.integer != GT_TEAMPLAY) { self->client->pers.records[REC_CHESTDEATHS]++; if (attacker && attacker->client) attacker->client->pers.records[REC_CHESTKILLS]++; @@ -1203,7 +1207,7 @@ void player_die(gentity_t * self, gentity_t * inflictor, gentity_t * attacker, i } else if ((self->client->lasthurt_location & LOCATION_STOMACH) == LOCATION_STOMACH || (self->client->lasthurt_location & LOCATION_GROIN) == LOCATION_GROIN) { // stomach kill - if (level.team_round_going) { + if ((g_gametype.integer == GT_TEAMPLAY && level.team_round_going) || g_gametype.integer != GT_TEAMPLAY) { self->client->pers.records[REC_STOMACHDEATHS]++; if (attacker && attacker->client) attacker->client->pers.records[REC_STOMACHKILLS]++; @@ -1213,7 +1217,7 @@ void player_die(gentity_t * self, gentity_t * inflictor, gentity_t * attacker, i } else if ((self->client->lasthurt_location & LOCATION_LEG) == LOCATION_LEG || (self->client->lasthurt_location & LOCATION_FOOT) == LOCATION_FOOT) { // leg kill - if (level.team_round_going) { + if ((g_gametype.integer == GT_TEAMPLAY && level.team_round_going) || g_gametype.integer != GT_TEAMPLAY) { self->client->pers.records[REC_LEGDEATHS]++; if (attacker && attacker->client) attacker->client->pers.records[REC_LEGKILLS]++; @@ -1221,7 +1225,7 @@ void player_die(gentity_t * self, gentity_t * inflictor, gentity_t * attacker, i PrintDeathMessage(self, attacker, LOC_LDAM, meansOfDeath); hurt = LOC_LDAM; } else { -// // non-location/world kill + // non-location/world kill PrintDeathMessage(self, attacker, LOC_NOLOC, meansOfDeath); hurt = 0; } @@ -1309,7 +1313,7 @@ void player_die(gentity_t * self, gentity_t * inflictor, gentity_t * attacker, i ResetKills(self); // JBravo: make it OK to frag teammates after rounds are over. if (attacker == self) { - if (g_gametype.integer == GT_TEAMPLAY && !level.team_round_going) { + if (g_gametype.integer == GT_TEAMPLAY && !level.team_round_going && !self->client->SuicideLikeARealMan) { } else AddScore(attacker, self->r.currentOrigin, -1); } else if (OnSameTeam(self, attacker)) { @@ -1381,7 +1385,7 @@ void player_die(gentity_t * self, gentity_t * inflictor, gentity_t * attacker, i attacker->client->lastKillTime = level.time; } } else { - if (g_gametype.integer == GT_TEAMPLAY && !level.team_round_going) { + if (g_gametype.integer == GT_TEAMPLAY && !level.team_round_going && !self->client->SuicideLikeARealMan) { } else AddScore(self, self->r.currentOrigin, -1); } @@ -1399,7 +1403,6 @@ void player_die(gentity_t * self, gentity_t * inflictor, gentity_t * attacker, i self->client->pers.records[REC_SUICIDES]++; self->client->pers.records[REC_KILLS]--; } -// AddScore(self, self->r.currentOrigin, -1); if (g_gametype.integer != GT_TEAMPLAY) { if (self->client->ps.powerups[PW_NEUTRALFLAG]) { // only happens in One Flag CTF Team_ReturnFlag(TEAM_FREE); diff --git a/reaction/game/g_local.h b/reaction/game/g_local.h index ef7b6ec2..377d1c6c 100644 --- a/reaction/game/g_local.h +++ b/reaction/game/g_local.h @@ -5,6 +5,10 @@ //----------------------------------------------------------------------------- // // $Log$ +// Revision 1.120 2002/08/28 23:10:06 jbravo +// Added cg_RQ3_SuicideLikeARealMan, timestamping to server logs and +// fixed stats for non-TP modes. +// // Revision 1.119 2002/08/27 04:47:48 niceass // ref say added // @@ -693,6 +697,7 @@ struct gclient_s { int radioGender; int radioSetMale; int radioSetFemale; + int SuicideLikeARealMan; qboolean radioOff; int team_wounds; int team_wounds_before; diff --git a/reaction/game/g_main.c b/reaction/game/g_main.c index 5646973c..a0b764df 100644 --- a/reaction/game/g_main.c +++ b/reaction/game/g_main.c @@ -5,6 +5,10 @@ //----------------------------------------------------------------------------- // // $Log$ +// Revision 1.111 2002/08/28 23:10:06 jbravo +// Added cg_RQ3_SuicideLikeARealMan, timestamping to server logs and +// fixed stats for non-TP modes. +// // Revision 1.110 2002/08/27 01:25:22 jbravo // Fixed scoring in TOURNAMENT mode and made it a legit gametype. // @@ -307,6 +311,7 @@ #include "g_local.h" #include "zcam.h" +#include "q_shared.h" level_locals_t level; @@ -1688,24 +1693,22 @@ void QDECL G_LogPrintf(const char *fmt, ...) { va_list argptr; char string[1024]; - int min, tens, sec, i, l; + int i, l; + qtime_t now; - sec = level.time / 1000; - min = sec / 60; - sec -= min * 60; - tens = sec / 10; - sec -= tens * 10; + trap_RealTime(&now); l = i = 0; - Com_sprintf(string, sizeof(string), "%3i:%i%i ", min, tens, sec); + string[0] = '\0'; + Com_sprintf(string, sizeof(string), "[%02i:%02i:%02i] ", now.tm_hour, now.tm_min, now.tm_sec); va_start(argptr, fmt); - vsprintf(string + 7, fmt, argptr); + vsprintf(string + 11, fmt, argptr); va_end(argptr); if (g_dedicated.integer) { - G_Printf("%s", string + 7); + G_Printf("%s", string + 11); } if (!level.logFile) { @@ -1739,8 +1742,17 @@ void LogExit(const char *string) { int i, numSorted; gclient_t *cl; + qtime_t now; + char* names_day[] = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }; + char* names_month[] = { "January", "February", "March", "April", "May", "June", "July", "August", + "September", "October", "November", "December" }; - G_LogPrintf("Exit: %s\n", string); + trap_RealTime(&now); + G_LogPrintf("Game ending at %s %i %s %i %i:%i:%i : %s\n", names_day[now.tm_wday], now.tm_mday, names_month[now.tm_mon], + (now.tm_year)+1900, now.tm_hour, now.tm_min, now.tm_sec, string); + trap_SendServerCommand(-1, va("print \"Game ending at %s %i %s %i %i:%i:%i.\n\"", names_day[now.tm_wday], + now.tm_mday, names_month[now.tm_mon], (now.tm_year)+1900, now.tm_hour, + now.tm_min, now.tm_sec, string)); level.intermissionQueued = level.time; diff --git a/reaction/game/g_missile.c b/reaction/game/g_missile.c index 5bb3479d..89ef30fb 100644 --- a/reaction/game/g_missile.c +++ b/reaction/game/g_missile.c @@ -5,6 +5,10 @@ //----------------------------------------------------------------------------- // // $Log$ +// Revision 1.30 2002/08/28 23:10:06 jbravo +// Added cg_RQ3_SuicideLikeARealMan, timestamping to server logs and +// fixed stats for non-TP modes. +// // Revision 1.29 2002/06/16 20:06:14 jbravo // Reindented all the source files with "indent -kr -ut -i8 -l120 -lc120 -sob -bad -bap" // @@ -117,10 +121,12 @@ void G_ExplodeMissile(gentity_t * ent) ent->splashMethodOfDeath)) { g_entities[ent->r.ownerNum].client->accuracy_hits++; // Elder: Statistics tracking - if (ent->s.weapon == WP_KNIFE && level.team_round_going) + if (ent->s.weapon == WP_KNIFE && + ((g_gametype.integer == GT_TEAMPLAY && level.team_round_going) || g_gametype.integer != GT_TEAMPLAY)) g_entities[ent->r.ownerNum].client->pers.records[REC_KNIFETHROWHITS]++; //g_entities[ent->r.ownerNum].client->knifeHits++; - if (ent->s.weapon == WP_GRENADE && level.team_round_going) + if (ent->s.weapon == WP_GRENADE && + ((g_gametype.integer == GT_TEAMPLAY && level.team_round_going) || g_gametype.integer != GT_TEAMPLAY)) g_entities[ent->r.ownerNum].client->pers.records[REC_GRENADEHITS]++; //g_entities[ent->r.ownerNum].client->grenHits++; } @@ -171,10 +177,12 @@ void G_MissileImpact(gentity_t * ent, trace_t * trace) if (LogAccuracyHit(other, &g_entities[ent->r.ownerNum])) { g_entities[ent->r.ownerNum].client->accuracy_hits++; // Elder: Statistics tracking - if (ent->s.weapon == WP_KNIFE && level.team_round_going) + if (ent->s.weapon == WP_KNIFE && + ((g_gametype.integer == GT_TEAMPLAY && level.team_round_going) || g_gametype.integer != GT_TEAMPLAY)) g_entities[ent->r.ownerNum].client->pers.records[REC_KNIFETHROWHITS]++; //g_entities[ent->r.ownerNum].client->knifeHits++; - if (ent->s.weapon == WP_GRENADE && level.team_round_going) + if (ent->s.weapon == WP_GRENADE && + ((g_gametype.integer == GT_TEAMPLAY && level.team_round_going) || g_gametype.integer != GT_TEAMPLAY)) g_entities[ent->r.ownerNum].client->pers.records[REC_GRENADEHITS]++; //g_entities[ent->r.ownerNum].client->grenHits++; hitClient = qtrue; @@ -357,10 +365,12 @@ void G_MissileImpact(gentity_t * ent, trace_t * trace) if (!hitClient) { g_entities[ent->r.ownerNum].client->accuracy_hits++; // Elder: Statistics tracking - if (ent->s.weapon == WP_KNIFE && level.team_round_going) + if (ent->s.weapon == WP_KNIFE && + ((g_gametype.integer == GT_TEAMPLAY && level.team_round_going) || g_gametype.integer != GT_TEAMPLAY)) g_entities[ent->r.ownerNum].client->pers.records[REC_KNIFETHROWHITS]++; //g_entities[ent->r.ownerNum].client->knifeHits++; - if (ent->s.weapon == WP_GRENADE && level.team_round_going) + if (ent->s.weapon == WP_GRENADE && + ((g_gametype.integer == GT_TEAMPLAY && level.team_round_going) || g_gametype.integer != GT_TEAMPLAY)) g_entities[ent->r.ownerNum].client->pers.records[REC_GRENADEHITS]++; //g_entities[ent->r.ownerNum].client->grenHits++; } @@ -564,7 +574,7 @@ gentity_t *fire_grenade(gentity_t * self, vec3_t start, vec3_t dir) //Elder: grenade toggle distances/speeds if (self->client) { // Elder: Statistics tracking - if (level.team_round_going) + if ((g_gametype.integer == GT_TEAMPLAY && level.team_round_going) || g_gametype.integer != GT_TEAMPLAY) self->client->pers.records[REC_GRENADESHOTS]++; if (self->client->ps.stats[STAT_HEALTH] <= 0 || // (self->client->ps.stats[STAT_RQ3] & RQ3_BANDAGE_WORK) == RQ3_BANDAGE_WORK || @@ -633,7 +643,7 @@ gentity_t *fire_knife(gentity_t * self, vec3_t start, vec3_t dir) VectorCopy(dir, bolt->s.apos.trBase); VectorCopy(dir, bolt->r.currentAngles); - if (self->client && level.team_round_going) { + if (self->client && ((g_gametype.integer == GT_TEAMPLAY && level.team_round_going) || g_gametype.integer != GT_TEAMPLAY)) { // Elder: Statistics tracking self->client->pers.records[REC_KNIFETHROWSHOTS]++; } diff --git a/reaction/game/g_weapon.c b/reaction/game/g_weapon.c index d352913f..4aaf4d6f 100644 --- a/reaction/game/g_weapon.c +++ b/reaction/game/g_weapon.c @@ -5,6 +5,10 @@ //----------------------------------------------------------------------------- // // $Log$ +// Revision 1.79 2002/08/28 23:10:06 jbravo +// Added cg_RQ3_SuicideLikeARealMan, timestamping to server logs and +// fixed stats for non-TP modes. +// // Revision 1.78 2002/08/23 23:07:01 blaze // Should have fixed the unkickable thing breaking explosive breakables. // @@ -556,7 +560,7 @@ void Bullet_Fire(gentity_t * ent, float spread, int damage, int MOD) if (LogAccuracyHit(traceEnt, ent)) { ent->client->accuracy_hits++; // Elder: Statistics tracking - if (level.team_round_going) { + if ((g_gametype.integer == GT_TEAMPLAY && level.team_round_going) || g_gametype.integer != GT_TEAMPLAY) { switch (MOD) { case MOD_PISTOL: ent->client->pers.records[REC_MK23HITS]++; @@ -746,18 +750,18 @@ void ShotgunPattern(vec3_t origin, vec3_t origin2, int seed, gentity_t * ent, in //Elder: added if (shotType == WP_M3) { // Elder: Statistics tracking - if (level.team_round_going) + if ((g_gametype.integer == GT_TEAMPLAY && level.team_round_going) || g_gametype.integer != GT_TEAMPLAY) ent->client->pers.records[REC_M3SHOTS]++; count = DEFAULT_M3_COUNT; } else if (shotType == WP_HANDCANNON) { // Elder: Statistics tracking - if (level.team_round_going) + if ((g_gametype.integer == GT_TEAMPLAY && level.team_round_going) || g_gametype.integer != GT_TEAMPLAY) ent->client->pers.records[REC_HANDCANNONSHOTS]++; count = DEFAULT_HANDCANNON_COUNT; hc_multipler = 4; } else { // Elder: Statistics tracking - if (level.team_round_going) + if ((g_gametype.integer == GT_TEAMPLAY && level.team_round_going) || g_gametype.integer != GT_TEAMPLAY) ent->client->pers.records[REC_HANDCANNONSHOTS]++; count = DEFAULT_HANDCANNON_COUNT; hc_multipler = 5; @@ -784,7 +788,7 @@ void ShotgunPattern(vec3_t origin, vec3_t origin2, int seed, gentity_t * ent, in hitClient = qtrue; ent->client->accuracy_hits++; // Elder: Statistics tracking - if (level.team_round_going) { + if ((g_gametype.integer == GT_TEAMPLAY && level.team_round_going) || g_gametype.integer != GT_TEAMPLAY) { switch (shotType) { case WP_M3: ent->client->pers.records[REC_M3HITS]++; @@ -1031,7 +1035,7 @@ void Knife_Attack(gentity_t * self, int damage) gentity_t *hitent; gentity_t *tent; - if (self->client && level.team_round_going) + if (self->client && ((g_gametype.integer == GT_TEAMPLAY && level.team_round_going) || g_gametype.integer != GT_TEAMPLAY)) self->client->pers.records[REC_KNIFESLASHSHOTS]++; VectorMA(muzzle, KNIFE_RANGE, forward, end); @@ -1064,7 +1068,7 @@ void Knife_Attack(gentity_t * self, int damage) } else if (self->client->knife_sound == -2) { // Hit player tent = G_TempEntity(tr.endpos, EV_RQ3_SOUND); tent->s.eventParm = RQ3_SOUND_KNIFEHIT; - if (self->client && level.team_round_going) + if (self->client && ((g_gametype.integer == GT_TEAMPLAY && level.team_round_going) || g_gametype.integer != GT_TEAMPLAY)) self->client->pers.records[REC_KNIFESLASHHITS]++; } self->client->knife_sound = 0; @@ -1397,7 +1401,7 @@ void Weapon_SSG3000_Fire(gentity_t * ent) int Material; // Elder: Statistics tracking - if (ent->client && level.team_round_going) + if (ent->client && ((g_gametype.integer == GT_TEAMPLAY && level.team_round_going) || g_gametype.integer != GT_TEAMPLAY)) ent->client->pers.records[REC_SSG3000SHOTS]++; VectorMA(muzzle, 8192 * 16, forward, end); @@ -1634,7 +1638,7 @@ void Weapon_SSG3000_Fire(gentity_t * ent) ent->client->rewardTime = level.time + REWARD_SPRITE_TIME; } ent->client->accuracy_hits++; - if (level.team_round_going) + if ((g_gametype.integer == GT_TEAMPLAY && level.team_round_going) || g_gametype.integer != GT_TEAMPLAY) ent->client->pers.records[REC_SSG3000HITS]++; //ent->client->ssgHits++; } @@ -1882,7 +1886,7 @@ qboolean LogAccuracyHit(gentity_t * target, gentity_t * attacker) if (target->client->ps.stats[STAT_HEALTH] <= 0) { // Elder: Statistics tracking - if (level.team_round_going) + if ((g_gametype.integer == GT_TEAMPLAY && level.team_round_going) || g_gametype.integer != GT_TEAMPLAY) attacker->client->pers.records[REC_CORPSESHOTS]++; return qfalse; }