--- freeciv/common/player.h Tue Mar 26 01:34:23 2002 +++ freeciv-phased/common/player.h Fri Apr 5 22:12:36 2002 @@ -46,7 +46,7 @@ H_CITYBUILDINGS=8, /* doesn't know what buildings are in enemy cities */ H_CITYUNITS=16, /* doesn't know what units are in enemy cities */ H_STACKS=32, /* doesn't know what units are in stacks */ - H_VETERAN=64, /* doesn't know veteran status of enemy units */ + H_EXPERIMENTAL=64, /* enable experimental AI features (for testing) */ H_SUB=128, /* doesn't know where subs may be lurking */ /* below this point are milder handicaps that I can actually implement -- Syela */ H_RATES=256, /* can't set its rates beyond government limits */ --- freeciv/server/stdinhand.c Fri Apr 5 16:12:30 2002 +++ freeciv-phased/server/stdinhand.c Fri Apr 5 22:11:35 2002 @@ -892,6 +892,7 @@ CMD_EASY, CMD_NORMAL, CMD_HARD, + CMD_EXPERIMENTAL, CMD_CMDLEVEL, CMD_FIRSTLEVEL, @@ -1072,6 +1073,16 @@ "sets the default level for any new AI players to 'hard'. With an " "argument, sets the skill level for that player only.") }, + {"experimental", ALLOW_CTRL, + /* TRANS: translate text between <> only */ + N_("experimental\n" + "experimental "), + N_("Set one or all AI players to 'experimental'."), + N_("With no arguments, sets all AI players to skill 'experimental', and " + "sets the default level for any new AI players to this. With an " + "argument, sets the skill level for that player only. THIS IS ONLY " + "FOR TESTING!") + }, {"cmdlevel", ALLOW_HACK, /* confusing to leave this at ALLOW_CTRL */ /* TRANS: translate text between <> only */ N_("cmdlevel\n" @@ -1521,7 +1532,7 @@ { const char *nm[11] = { "UNUSED", "UNKNOWN", "UNKNOWN", "easy", "UNKNOWN", "normal", "UNKNOWN", "hard", - "UNKNOWN", "UNKNOWN", "UNKNOWN" }; + "UNKNOWN", "UNKNOWN", "experimental" }; assert(level>0 && level<=10); return nm[level]; @@ -1535,14 +1546,14 @@ int h[11] = { -1, H_NONE, H_NONE, - H_RATES | H_TARGETS | H_HUTS, + H_RATES | H_TARGETS | H_HUTS | H_DEFENSIVE, H_NONE, H_RATES | H_TARGETS | H_HUTS, H_NONE, H_NONE, H_NONE, H_NONE, - H_NONE, + H_EXPERIMENTAL, }; assert(level>0 && level<=10); @@ -1818,8 +1829,9 @@ fprintf(script_file, "%s\n", (game.skill_level <= 3) ? "easy" : - (game.skill_level >= 6) ? "hard" : - "normal"); + (game.skill_level == 5) ? "medium" : + (game.skill_level < 10) ? "hard" : + "experimental"); if (*srvarg.metaserver_addr != '\0' && ((0 != strcmp(srvarg.metaserver_addr, DEFAULT_META_SERVER_ADDR)) || @@ -2421,13 +2433,18 @@ { enum m_pre_result match_result; struct player *pplayer; - enum command_id cmd = (level <= 3) ? CMD_EASY : - (level >= 6) ? CMD_HARD : - CMD_NORMAL; - /* kludge - these commands ought to be 'set' options really - rp */ + /* kludge - these commands ought to be 'set' options really - rp */ + enum command_id cmd; assert(level > 0 && level < 11); + switch(level) { + case 3 : cmd=CMD_EASY; break; + case 5 : cmd=CMD_NORMAL; break; + case 7 : cmd=CMD_HARD; break; + case 10 : cmd=CMD_EXPERIMENTAL; break; + } + pplayer=find_player_by_name_prefix(name, &match_result); if (pplayer) { @@ -2921,6 +2938,9 @@ case CMD_HARD: set_ai_level(caller, arg, 7); break; + case CMD_EXPERIMENTAL: + set_ai_level(caller, arg, 10); + break; case CMD_QUIT: quit_game(caller); break; @@ -3653,6 +3673,7 @@ CMD_EASY, CMD_NORMAL, CMD_HARD, + CMD_EXPERIMENTAL, CMD_REMOVE, -1 };