diff --git a/code/freespace2/freespace.cpp b/code/freespace2/freespace.cpp
index 683ade1..2ce1c69 100644
Index: code/freespace2/freespace.cpp
===================================================================
--- code/freespace2/freespace.cpp
+++ code/freespace2/freespace.cpp
@@ -5933,6 +5933,15 @@ void game_enter_state( int old_state, int new_state )
 
 			// remove any multiplayer flags from the game mode
 			Game_mode &= ~(GM_MULTIPLAYER);
+
+			// set the game_mode based on the type of player
+			Assert( Player != NULL );
+
+			if ( Player->flags & PLAYER_FLAGS_IS_MULTI ){
+				Game_mode = GM_MULTIPLAYER;
+			} else {
+				Game_mode = GM_NORMAL;
+			}
 	
 			// determine which ship this guy is currently based on
 			mission_load_up_campaign(Player);
@@ -5945,15 +5954,6 @@ void game_enter_state( int old_state, int new_state )
 				main_hall_init(Campaign.missions[Campaign.next_mission].main_hall);
 			}
 
-			// set the game_mode based on the type of player
-			Assert( Player != NULL );
-
-			if ( Player->flags & PLAYER_FLAGS_IS_MULTI ){
-				Game_mode = GM_MULTIPLAYER;
-			} else {
-				Game_mode = GM_NORMAL;
-			}
-
 			//if ( (Cmdline_start_netgame || (Cmdline_connect_addr != NULL)) && !Main_hall_netgame_started ) {
 			//	Main_hall_netgame_started = 1;
 			//	main_hall_do_multi_ready();
diff --git a/code/menuui/playermenu.cpp b/code/menuui/playermenu.cpp
index 5f2fe94..bf2a159 100644
Index: code/menuui/playermenu.cpp
===================================================================
--- code/menuui/playermenu.cpp
+++ code/menuui/playermenu.cpp
@@ -459,6 +459,18 @@ void player_select_close()
 	Player = &Players[0];
 	Player->flags |= PLAYER_FLAGS_STRUCTURE_IN_USE;
 
+	//New pilot file makes no distinction between multi pilots and regular ones, so let's do this here.
+	if (Player_select_mode == PLAYER_SELECT_MODE_MULTI) {
+		Player->flags |= PLAYER_FLAGS_IS_MULTI;
+	}
+
+	//WMC - Set appropriate game mode
+	if ( Player->flags & PLAYER_FLAGS_IS_MULTI ) {
+		Game_mode = GM_MULTIPLAYER;
+	} else {
+		Game_mode = GM_NORMAL;
+	}
+
 	// now read in a the pilot data
 	if ( !Pilot.load_player(Pilots[Player_select_pilot], Player) ) {
 		Error(LOCATION,"Couldn't load pilot file, bailing");
@@ -477,18 +489,6 @@ void player_select_close()
 	stop_parse();
 
 	Player_select_screen_active = 0;
-
-	//New pilot file makes no distinction between multi pilots and regular ones, so let's do this here.
-	if (Player_select_mode == PLAYER_SELECT_MODE_MULTI) {
-		Player->flags |= PLAYER_FLAGS_IS_MULTI;
-	}
-
-	//WMC - Set appropriate game mode
-	if ( Player->flags & PLAYER_FLAGS_IS_MULTI ) {
-		Game_mode = GM_MULTIPLAYER;
-	} else {
-		Game_mode = GM_NORMAL;
-	}
 }
 
 void player_select_set_input_mode(int n)

