int Team_TouchOurFlag( gentity_t *ent, gentity_t *other, int team ) { int i, num, j, enemyTeam; gentity_t *player; gclient_t *cl = other->client; int enemy_flag; vec3_t mins, maxs; int touch[MAX_GENTITIES]; gentity_t* enemy; float enemyDist, dist; if (cl->sess.sessionTeam == TEAM_RED) { enemy_flag = PW_BLUEFLAG; } else { enemy_flag = PW_REDFLAG; } if ( ent->flags & FL_DROPPED_ITEM ) { // hey, its not home. return it by teleporting it back //PrintMsg( NULL, "%s" S_COLOR_WHITE " returned the %s flag!\n", // cl->pers.netname, TeamName(team)); PrintCTFMessage(other->s.number, team, CTFMESSAGE_PLAYER_RETURNED_FLAG); AddScore(other, ent->r.currentOrigin, CTF_RECOVERY_BONUS); other->client->pers.teamState.flagrecovery++; other->client->pers.teamState.lastreturnedflag = level.time; //ResetFlag will remove this entity! We must return zero Team_ReturnFlagSound(Team_ResetFlag(team), team); return 0; } // the flag is at home base. if the player has the enemy // flag, he's just won! if (!cl->ps.powerups[enemy_flag]) return 0; // We don't have the flag // fix: captures after timelimit hit could // cause game ending with tied score if ( level.intermissionQueued ) { return 0; } // check for enemy closer to grab the flag VectorSubtract( ent->s.pos.trBase, minFlagRange, mins ); VectorAdd( ent->s.pos.trBase, maxFlagRange, maxs ); num = trap_EntitiesInBox( mins, maxs, touch, MAX_GENTITIES ); dist = Distance(ent->s.pos.trBase, other->client->ps.origin); if (other->client->sess.sessionTeam == TEAM_RED){ enemyTeam = TEAM_BLUE; } else { enemyTeam = TEAM_RED; } for ( j=0 ; j<num ; j++ ) { enemy = (g_entities + touch[j]); if (!enemy || !enemy->inuse || !enemy->client){ continue; } //check if its alive if (enemy->health < 1) continue; // dead people can't pickup //ignore specs if (enemy->client->sess.sessionTeam == TEAM_SPECTATOR) continue; //check if this is enemy if ((enemy->client->sess.sessionTeam != TEAM_RED && enemy->client->sess.sessionTeam != TEAM_BLUE) || enemy->client->sess.sessionTeam != enemyTeam){ continue; } //check if enemy is closer to our flag than us enemyDist = Distance(ent->s.pos.trBase,enemy->client->ps.origin); if (enemyDist < dist){ // possible recursion is hidden in this, but // infinite recursion wont happen, because we cant // have a < b and b < a at the same time return Team_TouchEnemyFlag( ent, enemy, team ); } } //PrintMsg( NULL, "%s" S_COLOR_WHITE " captured the %s flag!\n", cl->pers.netname, TeamName(OtherTeam(team))); PrintCTFMessage(other->s.number, team, CTFMESSAGE_PLAYER_CAPTURED_FLAG); cl->ps.powerups[enemy_flag] = 0; teamgame.last_flag_capture = level.time; teamgame.last_capture_team = team; // Increase the team's score AddTeamScore(ent->s.pos.trBase, other->client->sess.sessionTeam, 1); // Team_ForceGesture(other->client->sess.sessionTeam); //rww - don't really want to do this now. Mainly because performing a gesture disables your upper torso animations until it's done and you can't fire other->client->pers.teamState.captures++; other->client->rewardTime = level.time + REWARD_SPRITE_TIME; other->client->ps.persistant[PERS_CAPTURES]++; // other gets another 10 frag bonus AddScore(other, ent->r.currentOrigin, CTF_CAPTURE_BONUS); Team_CaptureFlagSound( ent, team ); // Ok, let's do the player loop, hand out the bonuses for (i = 0; i < sv_maxclients.integer; i++) { player = &g_entities[i]; if (!player->inuse || player == other) continue; if (player->client->sess.sessionTeam != cl->sess.sessionTeam) { player->client->pers.teamState.lasthurtcarrier = -5; } else if (player->client->sess.sessionTeam == cl->sess.sessionTeam) { AddScore(player, ent->r.currentOrigin, CTF_TEAM_BONUS); // award extra points for capture assists if (player->client->pers.teamState.lastreturnedflag + CTF_RETURN_FLAG_ASSIST_TIMEOUT > level.time) { AddScore (player, ent->r.currentOrigin, CTF_RETURN_FLAG_ASSIST_BONUS); other->client->pers.teamState.assists++; player->client->ps.persistant[PERS_ASSIST_COUNT]++; player->client->rewardTime = level.time + REWARD_SPRITE_TIME; } //Raz: Was 'else if' meaning people were missing out on some assist scores if (player->client->pers.teamState.lastfraggedcarrier + CTF_FRAG_CARRIER_ASSIST_TIMEOUT > level.time) { AddScore(player, ent->r.currentOrigin, CTF_FRAG_CARRIER_ASSIST_BONUS); other->client->pers.teamState.assists++; player->client->ps.persistant[PERS_ASSIST_COUNT]++; player->client->rewardTime = level.time + REWARD_SPRITE_TIME; } } } Team_ResetFlags(); CalculateRanks(); return 0; // Do not respawn this automatically }
/* * Team_DroppedFlagThink */ int Team_TouchOurFlag(Gentity *ent, Gentity *other, int team) { int i; Gentity *player; Gclient *cl = other->client; int enemy_flag; if(g_gametype.integer == GT_1FCTF) enemy_flag = PW_NEUTRALFLAG; else{ if(cl->sess.team == TEAM_RED) enemy_flag = PW_BLUEFLAG; else enemy_flag = PW_REDFLAG; if(ent->flags & FL_DROPPED_ITEM){ /* hey, it's not home. return it by teleporting it back */ PrintMsg(NULL, "%s" S_COLOR_WHITE " returned the %s flag!\n", cl->pers.netname, TeamName(team)); AddScore(other, ent->r.currentOrigin, CTF_RECOVERY_BONUS); other->client->pers.teamState.flagrecovery++; other->client->pers.teamState.lastreturnedflag = level.time; /* ResetFlag will remove this entity! We must return zero */ Team_ReturnFlagSound(Team_ResetFlag(team), team); return 0; } } /* the flag is at home base. if the player has the enemy * flag, he's just won! */ if(!cl->ps.powerups[enemy_flag]) return 0; /* We don't have the flag */ if(g_gametype.integer == GT_1FCTF) PrintMsg(NULL, "%s" S_COLOR_WHITE " captured the flag!\n", cl->pers.netname); else{ PrintMsg(NULL, "%s" S_COLOR_WHITE " captured the %s flag!\n", cl->pers.netname, TeamName(OtherTeam( team))); } cl->ps.powerups[enemy_flag] = 0; teamgame.last_flag_capture = level.time; teamgame.last_capture_team = team; /* Increase the team's score */ AddTeamScore(ent->s.traj.base, other->client->sess.team, 1); Team_ForceGesture(other->client->sess.team); other->client->pers.teamState.captures++; /* add the sprite over the player's head */ other->client->ps.eFlags &= ~(EF_AWARD_IMPRESSIVE | EF_AWARD_EXCELLENT | EF_AWARD_GAUNTLET | EF_AWARD_ASSIST | EF_AWARD_DEFEND | EF_AWARD_CAP); other->client->ps.eFlags |= EF_AWARD_CAP; other->client->rewardTime = level.time + REWARD_SPRITE_TIME; other->client->ps.persistant[PERS_CAPTURES]++; /* other gets another 10 frag bonus */ AddScore(other, ent->r.currentOrigin, CTF_CAPTURE_BONUS); Team_CaptureFlagSound(ent, team); /* Ok, let's do the player loop, hand out the bonuses */ for(i = 0; i < g_maxclients.integer; i++){ player = &g_entities[i]; /* also make sure we don't award assist bonuses to the flag carrier himself. */ if(!player->inuse || player == other) continue; if(player->client->sess.team != cl->sess.team) player->client->pers.teamState.lasthurtcarrier = -5; else if(player->client->sess.team == cl->sess.team){ if(player != other) AddScore(player, ent->r.currentOrigin, CTF_TEAM_BONUS); /* award extra points for capture assists */ if(player->client->pers.teamState.lastreturnedflag + CTF_RETURN_FLAG_ASSIST_TIMEOUT > level.time){ AddScore (player, ent->r.currentOrigin, CTF_RETURN_FLAG_ASSIST_BONUS); other->client->pers.teamState.assists++; player->client->ps.persistant[PERS_ASSIST_COUNT] ++; /* add the sprite over the player's head */ player->client->ps.eFlags &= ~(EF_AWARD_IMPRESSIVE | EF_AWARD_EXCELLENT | EF_AWARD_GAUNTLET | EF_AWARD_ASSIST | EF_AWARD_DEFEND | EF_AWARD_CAP); player->client->ps.eFlags |= EF_AWARD_ASSIST; player->client->rewardTime = level.time + REWARD_SPRITE_TIME; } if(player->client->pers.teamState.lastfraggedcarrier + CTF_FRAG_CARRIER_ASSIST_TIMEOUT > level.time){ AddScore(player, ent->r.currentOrigin, CTF_FRAG_CARRIER_ASSIST_BONUS); other->client->pers.teamState.assists++; player->client->ps.persistant[PERS_ASSIST_COUNT] ++; /* add the sprite over the player's head */ player->client->ps.eFlags &= ~(EF_AWARD_IMPRESSIVE | EF_AWARD_EXCELLENT | EF_AWARD_GAUNTLET | EF_AWARD_ASSIST | EF_AWARD_DEFEND | EF_AWARD_CAP); player->client->ps.eFlags |= EF_AWARD_ASSIST; player->client->rewardTime = level.time + REWARD_SPRITE_TIME; } } } Team_ResetFlags(); CalculateRanks(); return 0; /* Do not respawn this automatically */ }
/* ======================================================================================================================================= Team_TouchOurFlag ======================================================================================================================================= */ int Team_TouchOurFlag(gentity_t *ent, gentity_t *other, int team) { int i; gentity_t *player; gclient_t *cl = other->client; int enemy_flag; if (g_gametype.integer == GT_1FCTF) { enemy_flag = PW_NEUTRALFLAG; } else { if (cl->sess.sessionTeam == TEAM_RED) { enemy_flag = PW_BLUEFLAG; } else { enemy_flag = PW_REDFLAG; } if (ent->flags & FL_DROPPED_ITEM) { // hey, it's not home. return it by teleporting it back PrintMsg(NULL, "%s" S_COLOR_WHITE " returned the %s flag!\n", cl->pers.netname, TeamName(team)); AddScore(other, ent->r.currentOrigin, CTF_RECOVERY_BONUS); other->client->pers.teamState.lastreturnedflag = level.time; // 'ResetFlag' will remove this entity! We must return zero Team_ReturnFlagSound(Team_ResetFlag(team), team); return 0; } } // the flag is at home base. if the player has the enemy flag, he's just won! if (!cl->ps.powerups[enemy_flag]) { return 0; // we don't have the flag } if (g_gametype.integer == GT_1FCTF) { trap_SendServerCommand(-1, va("cp \"%s" S_COLOR_WHITE "\ncaptured the flag!\n\"", cl->pers.netname)); } else { trap_SendServerCommand(-1, va("cp \"%s" S_COLOR_WHITE "\ncaptured the %s flag!\n\"", cl->pers.netname, TeamName(OtherTeam(team)))); } cl->ps.powerups[enemy_flag] = 0; other->client->rewardTime = level.time + REWARD_TIME; other->client->ps.persistant[PERS_CAPTURES]++; // other gets another 10 frag bonus AddScore(other, ent->r.currentOrigin, CTF_CAPTURE_BONUS); // ok, let's do the player loop, hand out the bonuses for (i = 0; i < g_maxclients.integer; i++) { player = &g_entities[i]; // also make sure we don't award assist bonuses to the flag carrier himself. if (!player->inuse || player == other) { continue; } if (player->client->sess.sessionTeam != cl->sess.sessionTeam) { player->client->pers.teamState.lasthurtcarrier = -5; } else if (player->client->sess.sessionTeam == cl->sess.sessionTeam) { AddScore(player, ent->r.currentOrigin, CTF_TEAM_BONUS); // award extra points for capture assists if (player->client->pers.teamState.lastreturnedflag + CTF_RETURN_FLAG_ASSIST_TIMEOUT > level.time) { AddScore(player, ent->r.currentOrigin, CTF_RETURN_FLAG_ASSIST_BONUS); player->client->ps.persistant[PERS_ASSIST_COUNT]++; player->client->rewardTime = level.time + REWARD_TIME; } if (player->client->pers.teamState.lastfraggedcarrier + CTF_FRAG_CARRIER_ASSIST_TIMEOUT > level.time) { AddScore(player, ent->r.currentOrigin, CTF_FRAG_CARRIER_ASSIST_BONUS); player->client->ps.persistant[PERS_ASSIST_COUNT]++; player->client->rewardTime = level.time + REWARD_TIME; } } } teamgame.last_flag_capture = level.time; teamgame.last_capture_team = team; // increase the team's score AddTeamScore(ent->s.pos.trBase, other->client->sess.sessionTeam, 1); CalculateRanks(); Team_ResetFlags(); Team_CaptureFlagSound(ent, team); Team_ForceGesture(other->client->sess.sessionTeam); return 0; // do not respawn this automatically }
/* ============== Team_DroppedFlagThink ============== */ int Team_TouchOurFlag( gentity_t *ent, gentity_t *other, int team ) { int i; gentity_t *player; gclient_t *cl = other->client; int enemy_flag; #ifdef MISSIONPACK if( g_gametype.integer == GT_1FCTF ) { enemy_flag = PW_NEUTRALFLAG; } else { #endif if (cl->sess.sessionTeam == TEAM_RED) { enemy_flag = PW_BLUEFLAG; } else { enemy_flag = PW_REDFLAG; } if ( ent->flags & FL_DROPPED_ITEM ) { // hey, its not home. return it by teleporting it back PrintMsg( NULL, "%s" S_COLOR_WHITE " returned the %s flag!\n", cl->pers.netname, TeamName(team)); AddScore(other, ent->r.currentOrigin, CTF_RECOVERY_BONUS); other->client->pers.teamState.flagrecovery++; other->client->pers.teamState.lastreturnedflag = level.time; //ResetFlag will remove this entity! We must return zero Team_ReturnFlagSound(Team_ResetFlag(team), team); return 0; } #ifdef MISSIONPACK } #endif // the flag is at home base. if the player has the enemy // flag, he's just won! if (!cl->ps.powerups[enemy_flag]) return 0; // We don't have the flag #ifdef MISSIONPACK if( g_gametype.integer == GT_1FCTF ) { PrintMsg( NULL, "%s" S_COLOR_WHITE " captured the flag!\n", cl->pers.netname ); } else { #endif PrintMsg( NULL, "%s" S_COLOR_WHITE " captured the %s flag!\n", cl->pers.netname, TeamName(OtherTeam(team))); #ifdef MISSIONPACK } #endif cl->ps.powerups[enemy_flag] = 0; teamgame.last_flag_capture = level.time; teamgame.last_capture_team = team; // Increase the team's score AddTeamScore(ent->s.pos.trBase, other->client->sess.sessionTeam, 1); Team_ForceGesture(other->client->sess.sessionTeam); other->client->pers.teamState.captures++; // add the sprite over the player's head other->client->ps.eFlags &= ~(EF_AWARD_IMPRESSIVE | EF_AWARD_EXCELLENT | EF_AWARD_GAUNTLET | EF_AWARD_ASSIST | EF_AWARD_DEFEND | EF_AWARD_CAP ); other->client->ps.eFlags |= EF_AWARD_CAP; other->client->rewardTime = level.time + REWARD_SPRITE_TIME; other->client->ps.persistant[PERS_CAPTURES]++; // other gets another 10 frag bonus AddScore(other, ent->r.currentOrigin, CTF_CAPTURE_BONUS); Team_CaptureFlagSound( ent, team ); // Ok, let's do the player loop, hand out the bonuses for (i = 0; i < g_maxclients.integer; i++) { player = &g_entities[i]; if (!player->inuse) continue; if (player->client->sess.sessionTeam != cl->sess.sessionTeam) { player->client->pers.teamState.lasthurtcarrier = -5; } else if (player->client->sess.sessionTeam == cl->sess.sessionTeam) { if (player != other) AddScore(player, ent->r.currentOrigin, CTF_TEAM_BONUS); // award extra points for capture assists if (player->client->pers.teamState.lastreturnedflag + CTF_RETURN_FLAG_ASSIST_TIMEOUT > level.time) { AddScore (player, ent->r.currentOrigin, CTF_RETURN_FLAG_ASSIST_BONUS); other->client->pers.teamState.assists++; player->client->ps.persistant[PERS_ASSIST_COUNT]++; // add the sprite over the player's head player->client->ps.eFlags &= ~(EF_AWARD_IMPRESSIVE | EF_AWARD_EXCELLENT | EF_AWARD_GAUNTLET | EF_AWARD_ASSIST | EF_AWARD_DEFEND | EF_AWARD_CAP ); player->client->ps.eFlags |= EF_AWARD_ASSIST; player->client->rewardTime = level.time + REWARD_SPRITE_TIME; } else if (player->client->pers.teamState.lastfraggedcarrier + CTF_FRAG_CARRIER_ASSIST_TIMEOUT > level.time) { AddScore(player, ent->r.currentOrigin, CTF_FRAG_CARRIER_ASSIST_BONUS); other->client->pers.teamState.assists++; player->client->ps.persistant[PERS_ASSIST_COUNT]++; // add the sprite over the player's head player->client->ps.eFlags &= ~(EF_AWARD_IMPRESSIVE | EF_AWARD_EXCELLENT | EF_AWARD_GAUNTLET | EF_AWARD_ASSIST | EF_AWARD_DEFEND | EF_AWARD_CAP ); player->client->ps.eFlags |= EF_AWARD_ASSIST; player->client->rewardTime = level.time + REWARD_SPRITE_TIME; } } } Team_ResetFlags(); CalculateRanks(); return 0; // Do not respawn this automatically }
int Team_TouchOurFlag( gentity_t *ent, gentity_t *other, int team ) { int i; gentity_t *player; gclient_t *cl = other->client; int our_flag, enemy_flag; gentity_t *te; if ( cl->sess.sessionTeam == TEAM_RED ) { our_flag = PW_REDFLAG; enemy_flag = PW_BLUEFLAG; } else { our_flag = PW_BLUEFLAG; enemy_flag = PW_REDFLAG; } if ( ent->flags & FL_DROPPED_ITEM ) { // hey, its not home. return it by teleporting it back PrintMsg( NULL, "%s" S_COLOR_WHITE " returned the %s flag!\n", cl->pers.netname, TeamName( team ) ); AddScore( other, CTF_RECOVERY_BONUS ); other->client->pers.teamState.flagrecovery++; other->client->pers.teamState.lastreturnedflag = level.time; //ResetFlag will remove this entity! We must return zero Team_ReturnFlagSound( Team_ResetFlag( team ), team ); return 0; } // the flag is at home base. if the player has the enemy // flag, he's just won! if ( !cl->ps.powerups[enemy_flag] ) { return 0; // We don't have the flag } PrintMsg( NULL, "%s" S_COLOR_WHITE " captured the %s flag!\n", cl->pers.netname, TeamName( OtherTeam( team ) ) ); cl->ps.powerups[enemy_flag] = 0; teamgame.last_flag_capture = level.time; teamgame.last_capture_team = team; // Increase the team's score level.teamScores[ other->client->sess.sessionTeam ]++; other->client->pers.teamState.captures++; // other gets another 10 frag bonus AddScore( other, CTF_CAPTURE_BONUS ); te = G_TempEntity( ent->s.pos.trBase, EV_GLOBAL_SOUND ); te->s.eventParm = G_SoundIndex( our_flag == PW_REDFLAG ? "sound/teamplay/flagcap_red.wav" : "sound/teamplay/flagcap_blu.wav" ); te->r.svFlags |= SVF_BROADCAST; // Ok, let's do the player loop, hand out the bonuses for ( i = 0; i < g_maxclients.integer; i++ ) { player = &g_entities[i]; if ( !player->inuse ) { continue; } if ( player->client->sess.sessionTeam != cl->sess.sessionTeam ) { player->client->pers.teamState.lasthurtcarrier = -5; } else if ( player->client->sess.sessionTeam == cl->sess.sessionTeam ) { if ( player != other ) { AddScore( player, CTF_CAPTURE_BONUS ); } // award extra points for capture assists if ( player->client->pers.teamState.lastreturnedflag + CTF_RETURN_FLAG_ASSIST_TIMEOUT > level.time ) { PrintMsg( NULL, "%s" S_COLOR_WHITE " gets an assist for returning the %s flag!\n", player->client->pers.netname, TeamName( team ) ); AddScore( player, CTF_RETURN_FLAG_ASSIST_BONUS ); other->client->pers.teamState.assists++; } if ( player->client->pers.teamState.lastfraggedcarrier + CTF_FRAG_CARRIER_ASSIST_TIMEOUT > level.time ) { PrintMsg( NULL, "%s" S_COLOR_WHITE " gets an assist for fragging the %s flag carrier!\n", player->client->pers.netname, TeamName( OtherTeam( team ) ) ); AddScore( player, CTF_FRAG_CARRIER_ASSIST_BONUS ); other->client->pers.teamState.assists++; } } } Team_ResetFlags(); CalculateRanks(); return 0; // Do not respawn this automatically }
/* ============== Team_DroppedFlagThink ============== */ int Team_TouchOurFlag( gentity_t *ent, gentity_t *other, int team ) { int i; gentity_t *player; gclient_t *cl = other->client; int enemy_flag; if (cl->sess.sessionTeam == TEAM_RED) { enemy_flag = PW_BLUEFLAG; } else { enemy_flag = PW_REDFLAG; } if ( ent->flags & FL_DROPPED_ITEM ) { // hey, it's not home. return it by teleporting it back PrintMsg( NULL, "%s" S_COLOR_WHITE " returned the %s lolly!\n", cl->pers.netname, TeamName( team ) ); AddScore( other, ent->r.currentOrigin, CTF_RECOVERY_BONUS, SCORE_BONUS_RECOVERY_S ); other->client->pers.teamState.flagrecovery++; other->client->pers.teamState.lastreturnedflag = level.time; //ResetFlag will remove this entity! We must return zero Team_ReturnFlagSound(Team_ResetFlag(team), team); return 0; } // the flag is at home base. if the player has the enemy // flag, he's just won! if (!cl->ps.powerups[enemy_flag]) return 0; // We don't have the flag PrintMsg( NULL, "%s" S_COLOR_WHITE " captured the %s lolly!\n", cl->pers.netname, TeamName(OtherTeam(team))); cl->ps.powerups[enemy_flag] = 0; teamgame.last_flag_capture = level.time; teamgame.last_capture_team = team; // Increase the team's score AddTeamScore( ent->s.pos.trBase, other->client->sess.sessionTeam, SCORE_CAPTURE, SCORE_BONUS_CAPTURE_S ); // Team_ForceGesture(other->client->sess.sessionTeam); other->client->pers.teamState.captures++; // add the sprite over the player's head SetAward( other->client, AWARD_CAP ); other->client->ps.persistant[PERS_CAPTURES]++; // other gets another 10 frag bonus AddScore( other, ent->r.currentOrigin, CTF_CAPTURE_BONUS, SCORE_BONUS_CAPTURE_S ); Team_CaptureFlagSound( ent, team ); // Ok, let's do the player loop, hand out the bonuses for (i = 0; i < g_maxclients.integer; i++) { player = &g_entities[i]; // also make sure we don't award assist bonuses to the flag carrier himself. if (!player->inuse || player == other) continue; if (player->client->sess.sessionTeam != cl->sess.sessionTeam) { player->client->pers.teamState.lasthurtcarrier = -5; } else if (player->client->sess.sessionTeam == cl->sess.sessionTeam) { if (player != other) AddScore( player, ent->r.currentOrigin, CTF_TEAM_BONUS, SCORE_BONUS_CAPTURE_TEAM_S ); // award extra points for capture assists if (player->client->pers.teamState.lastreturnedflag + CTF_RETURN_FLAG_ASSIST_TIMEOUT > level.time) { AddScore( player, ent->r.currentOrigin, CTF_RETURN_FLAG_ASSIST_BONUS, SCORE_BONUS_ASSIST_RETURN_S ); other->client->pers.teamState.assists++; player->client->ps.persistant[PERS_ASSIST_COUNT]++; // add the sprite over the player's head SetAward( player->client, AWARD_ASSIST ); } else if (player->client->pers.teamState.lastfraggedcarrier + CTF_FRAG_CARRIER_ASSIST_TIMEOUT > level.time) { AddScore( player, ent->r.currentOrigin, CTF_FRAG_CARRIER_ASSIST_BONUS, SCORE_BONUS_ASSIST_FRAG_CARRIER_S ); other->client->pers.teamState.assists++; player->client->ps.persistant[PERS_ASSIST_COUNT]++; // add the sprite over the player's head SetAward( player->client, AWARD_ASSIST ); } } } Team_ResetFlags(); return 0; // Do not respawn this automatically }