X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=moves.c;h=85c50527195699031ebd8781031f444ea00544e2;hb=47c460336f44f19dd12fcc72234ba541faa02dd6;hp=ad68656c38959888900e7618da2d21e3093a1ff0;hpb=3f4064e46e530635b2c85617dd5c606c3d580cad;p=xboard.git diff --git a/moves.c b/moves.c index ad68656..85c5052 100644 --- a/moves.c +++ b/moves.c @@ -1160,7 +1160,14 @@ LegalityTest (Board board, int flags, int rf, int ff, int rt, int ft, int promoC if(board[BOARD_HEIGHT-1-PieceToNumber(CharToPiece(ToLower(promoChar)))][1] == 0) return ImpossibleMove; } } else - if(IS_SHOGI(gameInfo.variant)) { + if(gameInfo.variant == VariantChu) { + if(cl.kind != NormalMove || promoChar == NULLCHAR || promoChar == '=') return cl.kind; + if(promoChar != '+') + return CharToPiece(promoChar) == EmptySquare ? ImpossibleMove : IllegalMove; + if(PieceToChar(CHUPROMOTED board[rf][ff]) != '+') return ImpossibleMove; + return flags & F_WHITE_ON_MOVE ? WhitePromotion : BlackPromotion; + } else + if(gameInfo.variant == VariantShogi) { /* [HGM] Shogi promotions. '=' means defer */ if(rf != DROP_RANK && cl.kind == NormalMove) { ChessSquare piece = board[rf][ff];