diff -ur -Xorig1/diff_ignore orig1/common/game.c patch1/common/game.c --- orig1/common/game.c Tue Feb 20 08:02:17 2001 +++ patch1/common/game.c Tue Mar 6 14:27:08 2001 @@ -715,6 +715,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 -ur -Xorig1/diff_ignore orig1/common/game.h patch1/common/game.h --- orig1/common/game.h Tue Feb 20 08:02:17 2001 +++ patch1/common/game.h Tue Mar 6 14:16:11 2001 @@ -71,6 +71,7 @@ int diplchance; int cityfactor; int civilwarsize; + int corruptionsize; int min_players, max_players, nplayers; int aifill; int barbarianrate; @@ -355,6 +356,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 -ur -Xorig1/diff_ignore orig1/server/citytools.c patch1/server/citytools.c --- orig1/server/citytools.c Sun Mar 4 23:44:07 2001 +++ patch1/server/citytools.c Wed Mar 7 18:14:52 2001 @@ -559,6 +559,9 @@ 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 -ur -Xorig1/diff_ignore orig1/server/savegame.c patch1/server/savegame.c --- orig1/server/savegame.c Wed Feb 21 10:13:59 2001 +++ patch1/server/savegame.c Tue Mar 6 18:40:53 2001 @@ -1673,6 +1673,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) { @@ -2004,6 +2005,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 -ur -Xorig1/diff_ignore orig1/server/stdinhand.c patch1/server/stdinhand.c --- orig1/server/stdinhand.c Tue Feb 27 23:50:04 2001 +++ patch1/server/stdinhand.c Wed Mar 7 17:53:30 2001 @@ -449,7 +449,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,