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))
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);
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:
sprintf(tmp, "%d minutes, increment: %d seconds.\n\n", game_globals.garray[g].wInitTime / 600, game_globals.garray[g].wIncrement / 10);
}
strcat(gameString, tmp);
+
if(game_globals.garray[g].game_state.setup) { // [HGM] setup: print the initial position board
char *q; struct game_state_t initial_gs; struct move_t ml[600]; int r, f;
for (f = 0; f < 2; f++) {
for (r = 0; r < initial_gs.files; r++)
initial_gs.ep_possible[f][r] = 0;
- for (r = PAWN; r <= QUEEN; r++)
+ for (r = PAWN; r <= PIECES-1; r++)
initial_gs.holding[f][r-PAWN] = 0;
}
FEN_to_board(game_globals.garray[g].FENstartPos ,&initial_gs);
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) {
case 'q':
return B_QUEEN;
case 'E':
+ if(!strcmp(variant, "seirawan")) return W_ELEPHANT;
return W_ELEPHANT;
case 'e':
+ if(!strcmp(variant, "seirawan")) return B_ELEPHANT;
return B_ELEPHANT;
+ case 'H':
+ return W_HAWK;
+ case 'h':
+ return B_HAWK;
case 'K':
return W_KING;
case 'k':
case W_CANNON:
case W_MARSHALL:
return 'C';
+ case B_CAPTAIN:
case B_CANNON:
case B_MARSHALL:
return 'c';
return 'Q';
case B_QUEEN:
return 'q';
+ case W_SELEPHANT:
case W_ELEPHANT:
case W_EMPRESS:
return 'E';
+ case B_SELEPHANT:
case B_ELEPHANT:
case B_EMPRESS:
return 'e';
case W_WAZIR:
case W_WOODY:
return 'W';
+ case B_WARLORD:
case B_WAZIR:
case B_WOODY:
return 'w';
+ case W_HAWK:
case W_HORSE:
case W_PRIESTESS:
case W_NIGHTRIDER:
return 'H';
+ case B_HAWK:
case B_HORSE:
+ case B_HOPLITE:
case B_PRIESTESS:
case B_NIGHTRIDER:
return 'h';
case W_MASTODON:
return 'G';
case B_GOLD:
+ case B_GENERAL:
case B_MASTODON:
return 'g';
case W_AMAZON:
return 'k';
case W_LANCE:
return 'L';
+ case B_LIEUTENANT:
case B_LANCE:
return 'l';
default:
type[1] = 'b';
} else if (game_globals.garray[g].type == TYPE_WILD ||
game_globals.garray[g].type == TYPE_KNIGHTMATE ||
+ game_globals.garray[g].type == TYPE_CAPABLANCA ||
game_globals.garray[g].type == TYPE_GOTHIC) {
wr = player_globals.parray[wp].w_stats.rating;
br = player_globals.parray[bp].w_stats.rating;
sprintf(fname, "%s/player_data/%c/%s.%s", STATS_DIR,
player_globals.parray[wp].login[0], player_globals.parray[wp].login, STATS_GAMES);
- write_g_out(g, fname, 10, isDraw, EndSymbol, player_globals.parray[wp].name, &now);
+ write_g_out(g, fname, 40, isDraw, EndSymbol, player_globals.parray[wp].name, &now);
sprintf(fname, "%s/player_data/%c/%s.%s", STATS_DIR,
player_globals.parray[bp].login[0], player_globals.parray[bp].login, STATS_GAMES);
- write_g_out(g, fname, 10, isDraw, EndSymbol, player_globals.parray[bp].name, &now);
+ write_g_out(g, fname, 40, isDraw, EndSymbol, player_globals.parray[bp].name, &now);
if (isDraw)
Result = -1;
}
}
- if (blackking == 1 && whiteking == 1) return 0; /* Perfect! */
+ if ((blackking == 1 || blackking == 2 && !strcmp(gs->variant, "spartan")) && whiteking == 1) return 0; /* Perfect! */
return -1;
}