diff -Nur -Xfreecivdiff.ignore freeciv-cvs/common/city.c freeciv-patched/common/city.c --- freeciv-cvs/common/city.c Wed May 8 13:54:08 2002 +++ freeciv-patched/common/city.c Tue May 21 16:59:35 2002 @@ -319,7 +319,7 @@ terr_gate (terrain) or spec_gate (specials), or if the building has no terrain/special requirements. **************************************************************************/ -static bool city_has_terr_spec_gate(struct city *pcity, Impr_Type_id id) +bool city_has_terr_spec_gate(struct city *pcity, Impr_Type_id id) { struct impr_type *impr; enum tile_terrain_type *terr_gate; diff -Nur -Xfreecivdiff.ignore freeciv-cvs/common/city.h freeciv-patched/common/city.h --- freeciv-cvs/common/city.h Wed May 8 13:54:08 2002 +++ freeciv-patched/common/city.h Tue May 21 17:00:11 2002 @@ -331,6 +331,7 @@ /* city related improvement and unit functions */ +bool city_has_terr_spec_gate(struct city *pcity, Impr_Type_id id); int improvement_upkeep(struct city *pcity, Impr_Type_id i); bool could_build_improvement(struct city *pcity, Impr_Type_id id); bool can_build_improvement(struct city *pcity, Impr_Type_id id); diff -Nur -Xfreecivdiff.ignore freeciv-cvs/server/unittools.c freeciv-patched/server/unittools.c --- freeciv-cvs/server/unittools.c Mon May 13 17:44:52 2002 +++ freeciv-patched/server/unittools.c Tue May 21 16:53:49 2002 @@ -674,33 +674,35 @@ **************************************************************************/ static void city_landlocked_sell_coastal_improvements(int x, int y) { - /* FIXME: this should come from buildings.ruleset */ - static int coastal_improvements[] = - { - B_HARBOUR, - B_PORT, - B_COASTAL, - B_OFFSHORE - }; - -#define coastal_improvements_count ARRAY_SIZE(coastal_improvements) - +/* N.B. Now uses info from buildings.ruleset to decide which buildings + to sell. In theory this could (should?) be generalised to sell + relevant buildings after any change of terrain/special type */ adjc_iterate(x, y, x1, y1) { struct city *pcity = map_get_city(x1, y1); if (pcity && !is_terrain_near_tile(x1, y1, T_OCEAN)) { struct player *pplayer = city_owner(pcity); - int k; - for (k=0; kname, - improvement_value(coastal_improvements[k])); + improvement_value(impr)); } - } + } impr_type_iterate_end; } } adjc_iterate_end; }