diff -ruN freeciv.orig/common/game.h freeciv/common/game.h --- freeciv.orig/common/game.h Sun Jun 18 00:16:26 2000 +++ freeciv/common/game.h Mon Jun 19 13:27:07 2000 @@ -304,7 +304,7 @@ #define GAME_DEFAULT_RULESET "default" -#define GAME_DEFAULT_SKILL_LEVEL 3 /* easy */ +#define GAME_DEFAULT_SKILL_LEVEL 4 /* easy */ #define GAME_OLD_DEFAULT_SKILL_LEVEL 5 /* normal; for old save games */ #define GAME_DEFAULT_DEMOGRAPHY "NASRLPEMOqrb" diff -ruN freeciv.orig/server/stdinhand.c freeciv/server/stdinhand.c --- freeciv.orig/server/stdinhand.c Sun Jun 18 00:16:26 2000 +++ freeciv/server/stdinhand.c Mon Jun 19 14:06:40 2000 @@ -740,6 +740,7 @@ CMD_METASERVER, CMD_AITOGGLE, CMD_CREATE, + CMD_VERYEASY, CMD_EASY, CMD_NORMAL, CMD_HARD, @@ -873,6 +874,15 @@ N_("The 'create' command is only available before the game has " "been started.") }, + {"veryeasy", ALLOW_CTRL, + /* translate <> only */ + N_("veryeasy\n" + "veryeasy "), + N_("Set one or all AI players to 'veryeasy'."), + N_("With no arguments, sets all AI players to skill level 'veryeasy', and " + "sets the default level for any new AI players to 'veryeasy'. With an " + "argument, sets the skill level for that player only.") + }, {"easy", ALLOW_CTRL, /* translate <> only */ N_("easy\n" @@ -1293,8 +1303,8 @@ ***************************************************************/ static const char *name_of_skill_level(int level) { - const char *nm[11] = { "UNUSED", "UNKNOWN", "UNKNOWN", "easy", - "UNKNOWN", "normal", "UNKNOWN", "hard", + const char *nm[11] = { "UNUSED", "UNKNOWN", "UNKNOWN", "veryeasy", + "easy", "normal", "UNKNOWN", "hard", "UNKNOWN", "UNKNOWN", "UNKNOWN" }; assert(level>0 && level<=10); @@ -1329,7 +1339,7 @@ **************************************************************************/ static int fuzzy_of_skill_level(int level) { - int f[11] = { -1, 0, 0, 300/*easy*/, 0, 0, 0, 0, 0, 0, 0 }; + int f[11] = { -1, 0, 0, 300/*veryeasy*/, 100/*easy*/, 0, 0, 0, 0, 0, 0 }; assert(level>0 && level<=10); return f[level]; @@ -1342,7 +1352,7 @@ **************************************************************************/ static int expansionism_of_skill_level(int level) { - int x[11] = { -1, 100, 100, 30/*easy*/, 100, 100, 100, 100, 100, 100, 100 }; + int x[11] = { -1, 100, 100, 30/*veryeasy*/, 70/*easy*/, 100, 100, 100, 100, 100, 100 }; assert(level>0 && level<=10); return x[level]; @@ -1578,7 +1588,8 @@ cmdlevel_name(default_access_level)); fprintf(script_file, "%s\n", - (game.skill_level <= 3) ? "easy" : + (game.skill_level <= 3) ? "veryeasy" : + (game.skill_level = 4) ? "easy" : (game.skill_level >= 6) ? "hard" : "normal"); @@ -1983,7 +1994,8 @@ enum m_pre_result match_result; struct player *pplayer; int i; - enum command_id cmd = (level <= 3) ? CMD_EASY : + enum command_id cmd = (level <= 3) ? CMD_VERYEASY : + (level = 4) ? CMD_EASY : (level >= 6) ? CMD_HARD : CMD_NORMAL; /* kludge - these commands ought to be 'set' options really - rp */ @@ -2297,9 +2309,12 @@ case CMD_LOG: /* undocumented */ freelog(LOG_NORMAL, "%s", arg); break; - case CMD_EASY: + case CMD_VERYEASY: set_ai_level(caller, arg, 3); break; + case CMD_EASY: + set_ai_level(caller, arg, 4); + break; case CMD_NORMAL: set_ai_level(caller, arg, 5); break; @@ -2641,6 +2656,10 @@ _("create P - creates an AI player")); cmd_reply_help(CMD_CUT, _("cut P - cut connection to player")); + cmd_reply_help(CMD_VERYEASY, + _("veryeasy - all AI players will be veryeasy")); + cmd_reply_help(CMD_VERYEASY, + _("veryeasy P - AI player will be veryeasy")); cmd_reply_help(CMD_EASY, _("easy - all AI players will be easy")); cmd_reply_help(CMD_EASY,