--- old-freeciv/server/cityturn.c Sun Feb 28 13:32:42 1999 +++ freeciv/server/cityturn.c Wed Apr 7 02:49:02 1999 @@ -938,6 +938,15 @@ struct player *pplayer=&game.players[pcity->owner]; int id = pcity->currently_building; int id2= unit_types[id].obsoleted_by; + int id3 = unit_types[id2].obsoleted_by; + + while(can_build_unit_direct(pcity, id2) && + can_build_unit_direct(pcity, id3)) + { + id2 = id3; + id3 = unit_types[id2].obsoleted_by; + } + if (can_build_unit_direct(pcity, id2)) { pcity->currently_building=id2; notify_player_ex(pplayer, pcity->x, pcity->y, E_UNIT_UPGRADED,