diff --git a/reaction/game/g_active.c b/reaction/game/g_active.c index ae68171b..de3567f9 100644 --- a/reaction/game/g_active.c +++ b/reaction/game/g_active.c @@ -5,6 +5,9 @@ //----------------------------------------------------------------------------- // // $Log$ +// Revision 1.62 2002/03/26 11:32:04 jbravo +// Remember specstate between rounds. +// // Revision 1.61 2002/03/23 21:29:42 jbravo // I finally fixed snipers spawning with pistol up. g_RQ3_sniperup has been // reinstated. @@ -546,6 +549,7 @@ void SpectatorThink( gentity_t *ent, usercmd_t *ucmd ) { if((ucmd->buttons & BUTTON_ATTACK) && !( client->oldbuttons & BUTTON_ATTACK )) { if (client->sess.spectatorState == SPECTATOR_FREE && OKtoFollow(clientNum)) { client->sess.spectatorState = SPECTATOR_FOLLOW; + client->specMode = SPECTATOR_FOLLOW; client->ps.pm_flags |= PMF_FOLLOW; Cmd_FollowCycle_f( ent, 1 ); } else { @@ -1607,6 +1611,8 @@ void SpectatorClientEndFrame( gentity_t *ent ) { // drop them to free spectators unless they are dedicated camera followers if ( ent->client->sess.spectatorClient >= 0 ) { ent->client->sess.spectatorState = SPECTATOR_FREE; +// JBravo: saving spectatorState + ent->client->specMode = SPECTATOR_FREE; ClientBegin( ent->client - level.clients ); } } diff --git a/reaction/game/g_client.c b/reaction/game/g_client.c index ceeb6f8b..a8614d81 100644 --- a/reaction/game/g_client.c +++ b/reaction/game/g_client.c @@ -5,6 +5,9 @@ //----------------------------------------------------------------------------- // // $Log$ +// Revision 1.54 2002/03/26 11:32:04 jbravo +// Remember specstate between rounds. +// // Revision 1.53 2002/03/26 10:32:52 jbravo // Bye bye LCA lag // @@ -1323,7 +1326,7 @@ void ClientSpawn(gentity_t *ent) { // char *savedAreaBits; int accuracy_hits, accuracy_shots; int eventSequence; - int savedWeapon, savedItem; // JBravo: to save weapon/item info + int savedWeapon, savedItem, savedSpec; // JBravo: to save weapon/item info int savedRadiopower, savedRadiogender; // JBravo: for radio. char userinfo[MAX_INFO_STRING]; @@ -1357,6 +1360,11 @@ void ClientSpawn(gentity_t *ent) { if ( client->sess.sessionTeam == TEAM_SPECTATOR ) { spawnPoint = SelectSpectatorSpawnPoint ( spawn_origin, spawn_angles); +// JBravo: remember saved specmodes. + if (g_gametype.integer == GT_TEAMPLAY) { + if (client->specMode == SPECTATOR_FOLLOW || client->specMode == SPECTATOR_FREE) + client->sess.spectatorState = client->specMode; + } } else if (g_gametype.integer >= GT_CTF ) { // all base oriented team games use the CTF spawn points spawnPoint = SelectCTFSpawnPoint ( @@ -1431,6 +1439,7 @@ void ClientSpawn(gentity_t *ent) { // JBravo: save weapon/item info savedWeapon = client->teamplayWeapon; savedItem = client->teamplayItem; + savedSpec = client->specMode; // JBravo: save radiosettings savedRadiopower = client->radioOff; savedRadiogender = client->radioGender; @@ -1440,6 +1449,7 @@ void ClientSpawn(gentity_t *ent) { // JBravo: restore weapon/item info client->teamplayWeapon = savedWeapon; client->teamplayItem = savedItem; + client->specMode = savedSpec; // JBravo: restore radiosettings client->radioOff = savedRadiopower; client->radioGender = savedRadiogender; diff --git a/reaction/game/g_cmds.c b/reaction/game/g_cmds.c index 45e0972c..833af48a 100644 --- a/reaction/game/g_cmds.c +++ b/reaction/game/g_cmds.c @@ -5,6 +5,9 @@ //----------------------------------------------------------------------------- // // $Log$ +// Revision 1.82 2002/03/26 11:32:05 jbravo +// Remember specstate between rounds. +// // Revision 1.81 2002/03/23 05:17:42 jbravo // Major cleanup of game -> cgame communication with LCA vars. // @@ -969,6 +972,7 @@ void StopFollowing( gentity_t *ent ) { ent->client->ps.persistant[ PERS_TEAM ] = TEAM_SPECTATOR; ent->client->sess.sessionTeam = TEAM_SPECTATOR; ent->client->sess.spectatorState = SPECTATOR_FREE; + ent->client->specMode = SPECTATOR_FREE; //Slicer - Removing any zoom bits he might have gainned Cmd_Unzoom(ent); ent->client->ps.pm_flags &= ~PMF_FOLLOW; @@ -1083,6 +1087,7 @@ void Cmd_Follow_f( gentity_t *ent ) { } ent->client->sess.spectatorState = SPECTATOR_FOLLOW; + ent->client->specMode = SPECTATOR_FOLLOW; ent->client->sess.spectatorClient = i; } @@ -1141,6 +1146,7 @@ void Cmd_FollowCycle_f( gentity_t *ent, int dir ) { // this is good, we can use it ent->client->sess.spectatorClient = clientnum; ent->client->sess.spectatorState = SPECTATOR_FOLLOW; + ent->client->specMode = SPECTATOR_FOLLOW; return; } while ( clientnum != original ); diff --git a/reaction/game/g_local.h b/reaction/game/g_local.h index e5bf4df6..03ebc0f9 100644 --- a/reaction/game/g_local.h +++ b/reaction/game/g_local.h @@ -5,6 +5,9 @@ //----------------------------------------------------------------------------- // // $Log$ +// Revision 1.59 2002/03/26 11:32:05 jbravo +// Remember specstate between rounds. +// // Revision 1.58 2002/03/26 10:32:52 jbravo // Bye bye LCA lag // @@ -576,6 +579,7 @@ struct gclient_s { struct camera_s *camera; #endif /* __ZCAM__ */ // JBravo adding TP stuff + int specMode; int teamplayWeapon; int teamplayItem; int radioGender; diff --git a/reaction/game/g_session.c b/reaction/game/g_session.c index be7555b7..8cad4dc3 100644 --- a/reaction/game/g_session.c +++ b/reaction/game/g_session.c @@ -5,6 +5,9 @@ //----------------------------------------------------------------------------- // // $Log$ +// Revision 1.12 2002/03/26 11:32:05 jbravo +// Remember specstate between rounds. +// // Revision 1.11 2002/03/18 17:52:36 slicer // Saved sess.savedTeam throught map changes for matchmode // @@ -193,6 +196,7 @@ void G_InitSessionData( gclient_t *client, char *userinfo ) { } sess->spectatorState = SPECTATOR_FREE; + client->specMode = SPECTATOR_FREE; sess->spectatorTime = level.time; G_WriteClientSessionData( client ); diff --git a/reaction/game/g_teamplay.c b/reaction/game/g_teamplay.c index c90b9aa6..c5829917 100644 --- a/reaction/game/g_teamplay.c +++ b/reaction/game/g_teamplay.c @@ -5,6 +5,9 @@ //----------------------------------------------------------------------------- // // $Log$ +// Revision 1.46 2002/03/26 11:32:05 jbravo +// Remember specstate between rounds. +// // Revision 1.45 2002/03/26 10:32:52 jbravo // Bye bye LCA lag // @@ -865,11 +868,9 @@ void MakeSpectator( gentity_t *ent ) client->weaponCount[ent->client->ps.weapon] = 0; client->ps.stats[STAT_WEAPONS] = 0; - //Slicer, commenting this, fixes a lot..savedTeam is always accurate, no need to change it here -// client->sess.savedTeam = client->sess.sessionTeam; -// client->ps.persistant[PERS_SAVEDTEAM] = client->sess.sessionTeam; client->sess.sessionTeam = TEAM_SPECTATOR; client->ps.persistant[PERS_TEAM] = TEAM_SPECTATOR; + client->sess.spectatorState = client->specMode; ClientSpawn(ent); }