// Arnout: likely there are more cases in which we don't want this
if( g_gametype.integer != GT_SINGLE_PLAYER &&
g_gametype.integer != GT_COOP &&
g_gametype.integer != GT_WOLF &&
g_gametype.integer != GT_WOLF_STOPWATCH &&
!(g_gametype.integer == GT_WOLF_CAMPAIGN && ( g_campaigns[level.currentCampaign].current == 0 || level.newCampaign ) ) &&
!(g_gametype.integer == GT_WOLF_LMS && g_currentRound.integer == 0 ) ) {
trap_Cvar_VariableStringBuffer( va( "sessionstats%i", client - level.clients ), s, sizeof(s) );
// Arnout: read the clients stats (7) and medals (7)
sscanf( s, "%f %f %f %f %f %f %f %i %i %i %i %i %i %i",
&client->sess.skillpoints[0],
&client->sess.skillpoints[1],
&client->sess.skillpoints[2],
&client->sess.skillpoints[3],
&client->sess.skillpoints[4],
&client->sess.skillpoints[5],
&client->sess.skillpoints[6],
&client->sess.medals[0],
&client->sess.medals[1],
&client->sess.medals[2],
&client->sess.medals[3],
&client->sess.medals[4],
&client->sess.medals[5],
&client->sess.medals[6]
);
}
G_CalcRank( client );
test = (g_altStopwatchMode.integer != 0 || g_currentRound.integer == 1);
if(g_gametype.integer == GT_WOLF_STOPWATCH && g_gamestate.integer != GS_PLAYING && test) {
G_ClientSwap(client);
}
if ( g_swapteams.integer ) {
trap_Cvar_Set( "g_swapteams", "0" );
G_ClientSwap(client);
}
{
int j;
client->sess.startxptotal = 0;
for( j = 0; j < SK_NUM_SKILLS; j++ ) {
client->sess.startskillpoints[j] = client->sess.skillpoints[j];
client->sess.startxptotal += client->sess.skillpoints[j];
}
}
}
My guess is XPsave involves this… can anyone please confirm or deny that?