From 11d3528406bfcbb3f97780d4b2af571c0b3f6299 Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Sun, 15 Jun 2014 19:09:46 +0200 Subject: [PATCH] When parsing moves, use illegal moves to disambiguate. --- Board.pm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Board.pm b/Board.pm index b925a38..1838f7d 100644 --- a/Board.pm +++ b/Board.pm @@ -194,6 +194,14 @@ sub parse_pretty_move { next if (defined($from_col) && $from_col != $col); next if ($board->[$row][$col] ne $piece); next if (!$board->can_reach($piece, $row, $col, $to_row, $to_col)); + + # See if doing this move would put us in check + # (yes, there are clients that expect us to do this). + my $check = $board->make_move($row, $col, $to_row, $to_col, $promo)->in_check(); + next if ($check eq 'both' || + ($toplay eq 'W' && $check eq 'white') || + ($toplay eq 'B' && $check eq 'black')); + push @squares, [ $row, $col ]; } } -- 2.39.2