Fix check testing in games without King
authorH.G.Muller <hgm@hgm-xboard.(none)>
Sun, 17 Jul 2016 21:53:17 +0000 (23:53 +0200)
committerH.G.Muller <hgm@hgm-xboard.(none)>
Sun, 17 Jul 2016 21:53:17 +0000 (23:53 +0200)
A position without King was always considered as in check (because of
Atomic), which is rather illogical and undesirable in games where no
King participates (as it makes every move illegal).

moves.c

diff --git a/moves.c b/moves.c
index 25263c8..2f6a706 100644 (file)
--- a/moves.c
+++ b/moves.c
@@ -1735,6 +1735,8 @@ CheckTest (Board board, int flags, int rf, int ff, int rt, int ft, int enPassant
        }
     }
 
+    if(PieceToChar(king) == '.') return 0; // never in check if the royal piece does not participate
+
     if (rt >= 0) {
        if (enPassant) {
            captured = board[rf][ft];