diff -Nurd -X.diff_ignore freeciv/server/edithand.c freeciv/server/edithand.c
--- freeciv/server/edithand.c	2012-11-23 07:40:47.713592300 +0200
+++ freeciv/server/edithand.c	2013-01-13 09:07:14.432201133 +0200
@@ -1104,8 +1104,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);
   if (game_was_started()) {
     /* Find a color for the new player. */
     assign_player_colors();
diff -Nurd -X.diff_ignore freeciv/server/srv_main.c freeciv/server/srv_main.c
--- freeciv/server/srv_main.c	2012-12-11 11:43:57.355859097 +0200
+++ freeciv/server/srv_main.c	2013-01-13 09:11:13.064195898 +0200
@@ -1936,23 +1936,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 20:48:26.045493482 +0300
+++ freeciv/server/srv_main.h	2013-01-13 09:11:06.544196041 +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);
