Index: menuui/playermenu.cpp
===================================================================
--- menuui/playermenu.cpp	(revision 9592)
+++ menuui/playermenu.cpp	(working copy)
@@ -796,9 +796,13 @@
 		strcpy_s(Player_select_last_pilot,last_player);
 	}
 
+	if ( !Pilot.load_player(Pilots[Player_select_pilot], Player) ) {
 	//// determine if he was a single or multi-player based upon the last character in his callsign
 	// Player_select_last_is_multi = Player_select_last_pilot[strlen(Player_select_last_pilot)-1] == 'M' ? 1 : 0;
-	Player_select_last_is_multi = 0;
+		Player_select_last_is_multi = 0;
+	} else {
+		Player_select_last_is_multi = Player->player_was_multi;
+	}
 
 	// handle changing from pre-pilot code to post-pilot code
 	if (Player_select_last_pilot[strlen(Player_select_last_pilot)-1] == 'M' || Player_select_last_pilot[strlen(Player_select_last_pilot)-1] == 'S') {
Index: pilotfile/pilotfile.h
===================================================================
--- pilotfile/pilotfile.h	(revision 9592)
+++ pilotfile/pilotfile.h	(working copy)
@@ -41,6 +41,8 @@
 		SCP_string filename;
 		player *p;
 
+		int version;
+
 		// some sections are required before others...
 		bool m_have_flags;
 		bool m_have_info;
Index: pilotfile/plr.cpp
===================================================================
--- pilotfile/plr.cpp	(revision 9592)
+++ pilotfile/plr.cpp	(working copy)
@@ -25,7 +25,8 @@
 //       that sort!
 //
 //   0 - initial version
-static const ubyte PLR_VERSION = 0;
+//   1 - Adding support for the player is multi flag
+static const ubyte PLR_VERSION = 1;
 
 
 void pilotfile::plr_read_flags()
@@ -44,6 +45,14 @@
 
 	// special rank setting (to avoid having to read all stats on verify)
 	p->stats.rank = cfread_int(cfp);
+
+	if (version > 0) 
+	{
+		p->player_was_multi = cfread_int(cfp);
+	} else 
+	{
+		p->player_was_multi = 0; // Default to single player
+	}
 }
 
 void pilotfile::plr_write_flags()
@@ -65,6 +74,9 @@
 	// special rank setting (to avoid having to read all stats on verify)
 	cfwrite_int(p->stats.rank, cfp);
 
+	// What game mode we were in last on this pilot
+	cfwrite_int(p->player_was_multi, cfp);
+
 	endSection();
 }
 
@@ -807,9 +819,9 @@
 	}
 
 	// version, should be able to just ignore it
-	ubyte plr_ver = cfread_ubyte(cfp);
+	version = cfread_ubyte(cfp);
 
-	mprintf(("PLR => Loading '%s' with version %d...\n", filename.c_str(), (int)plr_ver));
+	mprintf(("PLR => Loading '%s' with version %d...\n", filename.c_str(), version));
 
 	plr_reset_data();
 
Index: playerman/player.h
===================================================================
--- playerman/player.h	(revision 9592)
+++ playerman/player.h	(working copy)
@@ -203,6 +203,8 @@
 	control_info	lua_ci;				// copy of control info for scripting purposes (not to disturb real controls).
 	button_info		lua_bi;				// copy of button info for scripting purposes (not to disturb real controls).
 	button_info		lua_bi_full;		// gets all the button controls, not just the ones usually allowed
+
+	int		player_was_multi;		// 1 if the player file was last used in Multiplayer
 } player;
 
 extern player Players[MAX_PLAYERS];
