X-Git-Url: http://winboard.nl/cgi-bin?p=capablanca.git;a=blobdiff_plain;f=lasker-2.2.3%2Fsrc%2Fmovecheck.c;h=e9b3a15ffe7b613f692877e32e176918c6f586f5;hp=d5759154cb926a53aca30f63e39db6470da8a99c;hb=e86b01cc0e1895b6af910235178344bc898874ef;hpb=76a192175f31fcb85ba99e354916dd78b9e5850e diff --git a/lasker-2.2.3/src/movecheck.c b/lasker-2.2.3/src/movecheck.c index d575915..e9b3a15 100644 --- a/lasker-2.2.3/src/movecheck.c +++ b/lasker-2.2.3/src/movecheck.c @@ -1710,7 +1710,7 @@ static int move_calculate(struct game_state_t * gs, struct move_t * mt, int prom for (i = g->numHalfMoves-1; i >= 0; i--) { if (g->moveList[i].fromFile == mt->fromFile && g->moveList[i].fromRank == mt->fromRank || g->moveList[i].toFile == mt->fromFile && g->moveList[i].toRank == mt->fromRank || - g->moveList[i].fromFile == ALG_CASTLE && (gs->onMove == WHITE ? 0 : gs->ranks-1) == mt->fromRank && + g->moveList[i].fromFile == ALG_CASTLE && (i&1 ? gs->ranks-1 : 0) == mt->fromRank && (g->moveList[i].fromRank == mt->fromFile || gs->files>>1 == mt->fromFile )) return MOVE_ILLEGAL; } mt->piecePromotionTo = promote; // gating OK