mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 00:33:09 +00:00
Fix brekage from previous patches
It is interesting the fact that we need to test for move_is_castle(m) anyway and not relying on testing if destination square is attacked. Indeed the latter condition fails if the castling rook is attacked, castling is coded as "king captures the rook" but it is legal in that case. Verified no functional change with beginning of the series. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
89a06f6651
commit
5b7a141065
2 changed files with 4 additions and 3 deletions
|
@ -603,9 +603,10 @@ bool Position::pl_move_is_legal(Move m, Bitboard pinned) const {
|
|||
assert(piece_on(king_square(us)) == make_piece(us, KING));
|
||||
|
||||
// If the moving piece is a king, check whether the destination
|
||||
// square is attacked by the opponent.
|
||||
// square is attacked by the opponent. Castling moves are checked
|
||||
// for legality during move generation.
|
||||
if (type_of_piece_on(from) == KING)
|
||||
return !(attackers_to(move_to(m)) & pieces_of_color(opposite_color(us)));
|
||||
return move_is_castle(m) || !(attackers_to(move_to(m)) & pieces_of_color(opposite_color(us)));
|
||||
|
||||
// A non-king move is legal if and only if it is not pinned or it
|
||||
// is moving along the ray towards or away from the king.
|
||||
|
|
|
@ -526,7 +526,7 @@ inline bool Position::is_chess960() const {
|
|||
inline bool Position::move_is_capture(Move m) const {
|
||||
|
||||
assert (m != MOVE_NONE && m != MOVE_NULL);
|
||||
return !square_is_empty(move_to(m)) || move_is_ep(m);
|
||||
return !move_is_special(m) ? !square_is_empty(move_to(m)) : move_is_ep(m);
|
||||
}
|
||||
|
||||
inline PieceType Position::captured_piece_type() const {
|
||||
|
|
Loading…
Add table
Reference in a new issue