X-Git-Url: http://winboard.nl/cgi-bin?p=capablanca.git;a=blobdiff_plain;f=lasker-2.2.3%2Fsrc%2Fgamedb.c;h=d084f81b91bc91a47db6f9844d19ca297771da9d;hp=becb7a01cf070ad03c53ea4ee3abd3dfe2a24a6f;hb=909e1e2feff0307c676d9cb96a881566baf6c6e1;hpb=5317b80b41045bd23473faf4748a9539a06e5f52 diff --git a/lasker-2.2.3/src/gamedb.c b/lasker-2.2.3/src/gamedb.c index becb7a0..d084f81 100644 --- a/lasker-2.2.3/src/gamedb.c +++ b/lasker-2.2.3/src/gamedb.c @@ -362,6 +362,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 +446,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 +728,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 +826,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 +863,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 +874,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 +890,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 +907,7 @@ char PieceToChar(int piece) return 'k'; case W_LANCE: return 'L'; + case B_LIEUTENANT: case B_LANCE: return 'l'; default: @@ -1716,7 +1739,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; }