diff -Nur freeciv-dev_trunk/common/game.c freeciv-dev_mainbranch/common/game.c --- freeciv-dev_trunk/common/game.c Sun Sep 2 23:42:26 2001 +++ freeciv-dev_mainbranch/common/game.c Sat Sep 8 15:57:05 2001 @@ -710,6 +710,7 @@ game.fogofwar = GAME_DEFAULT_FOGOFWAR; game.fogofwar_old= game.fogofwar; game.auto_ai_toggle = GAME_DEFAULT_AUTO_AI_TOGGLE; + game.corruptionsize = GAME_DEFAULT_CORRUPTIONSIZE; game.barbarianrate = GAME_DEFAULT_BARBARIANRATE; game.onsetbarbarian = GAME_DEFAULT_ONSETBARBARIAN; game.nbarbarians = 0; diff -Nur freeciv-dev_trunk/common/game.h freeciv-dev_mainbranch/common/game.h --- freeciv-dev_trunk/common/game.h Thu Sep 6 22:23:54 2001 +++ freeciv-dev_mainbranch/common/game.h Sat Sep 8 15:57:05 2001 @@ -73,6 +73,7 @@ int diplchance; int cityfactor; int civilwarsize; + int corruptionsize; int min_players, max_players, nplayers; int aifill; int barbarianrate; @@ -371,6 +372,10 @@ #define GAME_DEFAULT_PINGTIMEOUT 60 #define GAME_MIN_PINGTIMEOUT 60 #define GAME_MAX_PINGTIMEOUT 1800 + +#define GAME_DEFAULT_CORRUPTIONSIZE 1 +#define GAME_MIN_CORRUPTIONSIZE 1 +#define GAME_MAX_CORRUPTIONSIZE 150 #define GAME_DEFAULT_BARBARIANRATE 2 #define GAME_MIN_BARBARIANRATE 0 diff -Nur freeciv-dev_trunk/common/city.c freeciv-dev_mainbranch/common/city.c --- freeciv-dev_trunk/common/city.c Thu Sep 6 19:31:27 2001 +++ freeciv-dev_mainbranch/common/city.c Sat Sep 8 15:57:05 2001 @@ -1838,6 +1838,9 @@ city_got_building(pcity, B_PALACE)) val /= 2; val *= g->corruption_level; val /= 100; + + /* corruption penalty if city is smaller than corruptionsize */ + val = MAX(val, trade * (game.corruptionsize - pcity->size) * 3 / 2 / game.corruptionsize); if (val > trade) val = trade; return (val); /* how did y'all let me forget this one? -- Syela */ diff -Nur freeciv-dev_trunk/server/savegame.c freeciv-dev_mainbranch/server/savegame.c --- freeciv-dev_trunk/server/savegame.c Sun Sep 2 23:42:27 2001 +++ freeciv-dev_mainbranch/server/savegame.c Sat Sep 8 15:57:05 2001 @@ -1991,6 +1991,7 @@ game.warminglevel = secfile_lookup_int(file, "game.warminglevel"); game.nuclearwinter = secfile_lookup_int_default(file, 0, "game.nuclearwinter"); game.coolinglevel = secfile_lookup_int_default(file, 8, "game.coolinglevel"); + game.corruptionsize= secfile_lookup_int_default(file, 1, "game.corruptionsize"); game.unhappysize = secfile_lookup_int(file, "game.unhappysize"); if (game.version >= 10100) { @@ -2352,6 +2353,7 @@ secfile_insert_int(file, game.warminglevel, "game.warminglevel"); secfile_insert_int(file, game.nuclearwinter, "game.nuclearwinter"); secfile_insert_int(file, game.coolinglevel, "game.coolinglevel"); + secfile_insert_int(file, game.corruptionsize, "game.corruptionsize"); secfile_insert_int(file, game.unhappysize, "game.unhappysize"); secfile_insert_int(file, game.cityfactor, "game.cityfactor"); secfile_insert_int(file, game.civilwarsize, "game.civilwarsize"); diff -Nur freeciv-dev_trunk/server/stdinhand.c freeciv-dev_mainbranch/server/stdinhand.c --- freeciv-dev_trunk/server/stdinhand.c Fri Sep 7 09:57:12 2001 +++ freeciv-dev_mainbranch/server/stdinhand.c Sat Sep 8 15:57:05 2001 @@ -489,7 +489,16 @@ N_("If a city would expand, but it can't because it needs an Aqueduct " "(or Sewer System), it loses this percentage of its foodbox " "(or half that amount if it has a Granary).") }, - + + { "corruptsize", &game.corruptionsize, NULL, NULL, + SSET_RULES, SSET_TO_CLIENT, + GAME_MIN_CORRUPTIONSIZE, GAME_MAX_CORRUPTIONSIZE, GAME_DEFAULT_CORRUPTIONSIZE, + N_("Minimum city size without fixed corruption"), + N_("There is a minimum corruption in all cities smaller than this. " + "The minimum is 100% for sizes up to corruptsize/3, and decreases " + "gradually to 0% for size=corruptsize. This does not apply under " + "Democracy.") }, + { "unhappysize", &game.unhappysize, NULL, NULL, SSET_RULES, SSET_TO_CLIENT, GAME_MIN_UNHAPPYSIZE, GAME_MAX_UNHAPPYSIZE, GAME_DEFAULT_UNHAPPYSIZE,