X-Git-Url: http://winboard.nl/cgi-bin?p=capablanca.git;a=blobdiff_plain;f=lasker-2.2.3%2Fsrc%2Fgamedb.c;h=c0fa3b39fb30a7cebf998349d823114fcc21ea71;hp=becb7a01cf070ad03c53ea4ee3abd3dfe2a24a6f;hb=ec2e35ca3d96717de698ac0d946369634e1f91a6;hpb=5317b80b41045bd23473faf4748a9539a06e5f52 diff --git a/lasker-2.2.3/src/gamedb.c b/lasker-2.2.3/src/gamedb.c index becb7a0..c0fa3b3 100644 --- a/lasker-2.2.3/src/gamedb.c +++ b/lasker-2.2.3/src/gamedb.c @@ -167,12 +167,13 @@ int game_isblitz(int wt, int winc, int bt, int binc, return TYPE_KNIGHTMATE; if (!strcmp(cat, "capablanca")) return TYPE_CAPABLANCA; - if (board && board[0]) { + if (board && board[0] && strcmp(board, "0")) { if (!strcmp(cat, "wild")) return TYPE_WILD; if (strcmp(cat, "standard") || strcmp(board, "standard")) return TYPE_NONSTANDARD; } + return TYPE_WILD; } if ((wt == 0) || (bt == 0)) @@ -362,6 +363,10 @@ char *EndString(int g, int personal) sprintf(endstr, "%s bared", game_globals.garray[g].winner == WHITE ? blackguy : whiteguy); break; + case END_PERPETUAL: + sprintf(endstr, "%s perpetually checking", + game_globals.garray[g].winner == WHITE ? blackguy : whiteguy); + break; case END_RESIGN: sprintf(endstr, "%s resigned", game_globals.garray[g].winner == WHITE ? blackguy : whiteguy); @@ -442,6 +447,7 @@ const char *EndSym(int g) case END_FLAG: case END_ADJWIN: case END_BARE: + case END_PERPETUAL: return ((game_globals.garray[g].winner == WHITE) ? symbols[0] : symbols[1]); break; case END_AGREEDDRAW: @@ -723,6 +729,19 @@ int CharToPiece(char c, char *variant) case 'v': return B_CENTAUR; } + } else if(!strcmp(variant, "spartan")) { + switch(c) { + case 'w': + return B_WARLORD; + case 'g': + return B_GENERAL; + case 'l': + return B_LIEUTENANT; + case 'c': + return B_CAPTAIN; + case 'h': + return B_HOPLITE; + } } } switch (c) { @@ -808,6 +827,7 @@ char PieceToChar(int piece) case W_CANNON: case W_MARSHALL: return 'C'; + case B_CAPTAIN: case B_CANNON: case B_MARSHALL: return 'c'; @@ -844,6 +864,7 @@ char PieceToChar(int piece) case W_WAZIR: case W_WOODY: return 'W'; + case B_WARLORD: case B_WAZIR: case B_WOODY: return 'w'; @@ -854,6 +875,7 @@ char PieceToChar(int piece) return 'H'; case B_HAWK: case B_HORSE: + case B_HOPLITE: case B_PRIESTESS: case B_NIGHTRIDER: return 'h'; @@ -869,6 +891,7 @@ char PieceToChar(int piece) case W_MASTODON: return 'G'; case B_GOLD: + case B_GENERAL: case B_MASTODON: return 'g'; case W_AMAZON: @@ -885,6 +908,7 @@ char PieceToChar(int piece) return 'k'; case W_LANCE: return 'L'; + case B_LIEUTENANT: case B_LANCE: return 'l'; default: @@ -1716,7 +1740,7 @@ static int check_kings(struct game_state_t *gs) } } - if (blackking == 1 && whiteking == 1) return 0; /* Perfect! */ + if ((blackking == 1 || blackking == 2 && !strcmp(gs->variant, "spartan")) && whiteking == 1) return 0; /* Perfect! */ return -1; }