diff -Nurd -X.diff_ignore freeciv/server/edithand.c freeciv/server/edithand.c
--- freeciv/server/edithand.c	2012-11-24 06:47:59.348354026 +0200
+++ freeciv/server/edithand.c	2013-01-13 09:14:49.280191154 +0200
@@ -1013,8 +1013,7 @@
   }
   server_player_init(pplayer, TRUE, TRUE);
 
-  player_set_nation(pplayer, pnation);
-  server_player_set_name(pplayer, pick_random_player_name(pnation));
+  player_nation_defaults(pplayer, pnation, TRUE);
   sz_strlcpy(pplayer->username, ANON_USER_NAME);
   pplayer->is_connected = FALSE;
   pplayer->government = pnation->init_government;
diff -Nurd -X.diff_ignore freeciv/server/srv_main.c freeciv/server/srv_main.c
--- freeciv/server/srv_main.c	2012-12-12 12:51:42.916763257 +0200
+++ freeciv/server/srv_main.c	2013-01-13 09:13:54.724192351 +0200
@@ -1929,23 +1929,29 @@
 static void player_set_nation_full(struct player *pplayer,
                                    struct nation_type *pnation)
 {
+  /* Don't change the name of a created player. */
+  player_nation_defaults(pplayer, pnation, !pplayer->was_created);
+}
+
+/****************************************************************************
+  Set nation for player with nation default values.
+****************************************************************************/
+void player_nation_defaults(struct player *pplayer, struct nation_type *pnation,
+                            bool set_name)
+{
   struct nation_leader *pleader;
 
   fc_assert(NO_NATION_SELECTED != pnation);
   player_set_nation(pplayer, pnation);
   fc_assert(pnation == pplayer->nation);
 
-  pplayer->city_style =
-      city_style_of_nation(nation_of_player(pplayer));
+  pplayer->city_style = city_style_of_nation(nation_of_player(pplayer));
 
-  /* Don't change the name of a created player. */
-  if (!pplayer->was_created) {
-    server_player_set_name(pplayer, pick_random_player_name
-                           (nation_of_player(pplayer)));
+  if (set_name) {
+    server_player_set_name(pplayer, pick_random_player_name(pnation));
   }
 
-  if ((pleader = nation_leader_by_name(nation_of_player(pplayer),
-                                       player_name(pplayer)))) {
+  if ((pleader = nation_leader_by_name(pnation, player_name(pplayer)))) {
     pplayer->is_male = nation_leader_is_male(pleader);
   } else {
     pplayer->is_male = (fc_rand(2) == 1);
diff -Nurd -X.diff_ignore freeciv/server/srv_main.h freeciv/server/srv_main.h
--- freeciv/server/srv_main.h	2012-09-29 21:28:31.865440699 +0300
+++ freeciv/server/srv_main.h	2013-01-13 09:13:54.724192351 +0200
@@ -102,6 +102,8 @@
 void save_game(const char *orig_filename, const char *save_reason,
                bool scenario);
 const char *pick_random_player_name(const struct nation_type *pnation);
+void player_nation_defaults(struct player *pplayer, struct nation_type *pnation,
+                            bool set_name);
 void send_all_info(struct conn_list *dest);
 
 void identity_number_release(int id);
