X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=backend.c;h=f10b4a0b660fcba1d6ae2a12e4ad49d5a7bb8076;hb=52200167cf575a4b1a3101d17f540de644e76558;hp=8831176a7269b82192f75244a1b62972f178b731;hpb=eff45351602b11217d119a3a0251f6dbf930107b;p=xboard.git diff --git a/backend.c b/backend.c index 8831176..f10b4a0 100644 --- a/backend.c +++ b/backend.c @@ -10147,6 +10147,11 @@ ApplyMove (int fromX, int fromY, int toX, int toY, int promoChar, Board board) board[toY][toX + (killX < fromX ? 1 : -1)] = killed; board[EP_STATUS] = EP_NONE; // capture was fake! } else + if(nrCastlingRights == 0 && board[toY][toX] < EmptySquare && (piece < BlackPawn) == (board[toY][toX] < BlackPawn)) { + board[fromY][fromX] = board[toY][toX]; // capture own will lead to swapping + board[toY][toX] = piece; + board[EP_STATUS] = EP_NONE; // capture was fake! + } else /* Code added by Tord: */ /* FRC castling assumed when king captures friendly rook. [HGM] or RxK for S-Chess */ if (board[fromY][fromX] == WhiteKing && board[toY][toX] == WhiteRook ||