dx = ff - tf;
dy = fr - tr;
- if (dy == gs->onMove == WHITE ? 2 : -2) {
+ if (dy == (gs->onMove == WHITE ? -2 : 2)) {
if (abs(dx) == 1)
return 1;
}
switch(piecetype(piece)) {
case PAWN:
case LANCE:
- case KNIGHT:
+ case HONORABLEHORSE:
case SILVER:
promote = GOLD; break;
case BISHOP:
}
} else
switch(piecetype(piece)) { // force mandatory promotions
- case KNIGHT:
+ case HONORABLEHORSE:
if(mt->toRank == 1 || mt->toRank == gs->files-2) promote = GOLD;
case PAWN:
case LANCE:
}\r
for (InitPieceLoop(gs->board, &f, &r, gs->onMove);\r
NextPieceLoop(gs->board, &f, &r, gs->onMove, gs->files, gs->ranks);) {\r
- if (legal_move(gs, f, r, kf, kr)) { /* In Check? */\r
+ if (legal_move(gs, f, r, kf, kr)) { /* In Check? */
return 1;\r
}\r
}\r
if(game_globals.garray[gs->gameNum].link < 0) {
// we have no partner, so we must have something to drop now
for(i=QUEEN; i>=PAWN; i--)
- if(gs->holding[gs->onMove==WHITE ? 0 : 1][i-1]) break;
- if(i > PAWN) return 1; // we have a non-Pawn to drop
- // We have a Pawn, but check if it legal to drop it
- if(i == PAWN && r != 0 && r != gs->ranks-1) return 1; // [HGM] todo: for Shogi there are extra conditions on Pawn drops!
+ if (legal_andcheck_move(gs, ALG_DROP, i, f, r)) return 1;\r
+ return 0;
}\r
return 1;\r
}\r