diff -Nur -X/home/thue/freeciv-dev/no.freeciv freeciv/server/barbarian.c transfer_city_bugs/server/barbarian.c --- freeciv/server/barbarian.c Sat Apr 8 14:29:45 2000 +++ transfer_city_bugs/server/barbarian.c Sat Apr 8 22:03:18 2000 @@ -141,7 +141,7 @@ /* make a new player */ - server_player_init(barbarians); + server_player_init(barbarians, 1); barbarians->nation = game.nation_count-1; pick_ai_player_name( game.nation_count-1, barbarians->name); diff -Nur -X/home/thue/freeciv-dev/no.freeciv freeciv/server/citytools.c transfer_city_bugs/server/citytools.c --- freeciv/server/citytools.c Sat Apr 8 14:29:46 2000 +++ transfer_city_bugs/server/citytools.c Sat Apr 8 22:05:32 2000 @@ -730,7 +730,7 @@ /* make a new player */ - server_player_init(cplayer); + server_player_init(cplayer, 1); /* select a new name and nation for the copied player. */ diff -Nur -X/home/thue/freeciv-dev/no.freeciv freeciv/server/civserver.c transfer_city_bugs/server/civserver.c --- freeciv/server/civserver.c Sat Apr 8 14:29:46 2000 +++ transfer_city_bugs/server/civserver.c Sat Apr 8 22:15:11 2000 @@ -426,9 +426,11 @@ if(game.is_new_game) { for(i=0; ieconomic.gold=game.gold; } game.max_players=game.nplayers; @@ -1410,7 +1412,7 @@ { struct player *pplayer = &game.players[game.nplayers]; - server_player_init(pplayer); + server_player_init(pplayer, 0); /* sometimes needed if players connect/disconnect to avoid * inheriting stale AI status etc */ @@ -1579,7 +1581,7 @@ return; } - accept_new_player(req->name, pconn); + accept_new_player(req->name, pconn); } /************************************************************************** @@ -1858,6 +1860,18 @@ int o; for (o = 0; o < game.nplayers; o++) disable_fog_of_war_player(&game.players[o]); +} + + +/********************************************************************** +The initmap option is used because we don't want to initialize the map +before the x and y sizes have been determined +***********************************************************************/ +void server_player_init(struct player *pplayer, int initmap) +{ + if (server_state != PRE_GAME_STATE) + player_map_allocate(pplayer); + player_init(pplayer); } #ifdef GENERATING_MAC diff -Nur -X/home/thue/freeciv-dev/no.freeciv freeciv/server/civserver.h transfer_city_bugs/server/civserver.h --- freeciv/server/civserver.h Sat Apr 8 14:29:46 2000 +++ transfer_city_bugs/server/civserver.h Sat Apr 8 22:10:12 2000 @@ -27,6 +27,7 @@ void start_game(void); void save_game(char *filename); void pick_ai_player_name(Nation_Type_id nation, char *newname); +void server_player_init(struct player *pplayer, int initmap); void dealloc_id(int id); int is_id_allocated(int id); diff -Nur -X/home/thue/freeciv-dev/no.freeciv freeciv/server/plrhand.c transfer_city_bugs/server/plrhand.c --- freeciv/server/plrhand.c Sat Apr 8 14:29:47 2000 +++ transfer_city_bugs/server/plrhand.c Sat Apr 8 21:53:00 2000 @@ -2802,12 +2802,3 @@ } } } - -/********************************************************************** -... -***********************************************************************/ -void server_player_init(struct player *pplayer) -{ - player_map_allocate(pplayer); - player_init(pplayer); -} diff -Nur -X/home/thue/freeciv-dev/no.freeciv freeciv/server/plrhand.h transfer_city_bugs/server/plrhand.h --- freeciv/server/plrhand.h Sat Apr 8 14:29:47 2000 +++ transfer_city_bugs/server/plrhand.h Sat Apr 8 21:56:04 2000 @@ -73,6 +73,5 @@ void player_load(struct player *plr, int plrno, struct section_file *file); void player_map_load(struct player *plr, int plrno, struct section_file *file); void player_save(struct player *plr, int plrno, struct section_file *file); -void server_player_init(struct player *pplayer); #endif /* FC__PLRHAND_H */