From 22fc9678abe3c2fe6d0d23262587dc7a39449abc Mon Sep 17 00:00:00 2001 From: Fabian Fichter Date: Mon, 5 Aug 2019 23:01:27 +0200 Subject: [PATCH] Fix FEN generation for S-Chess Prevents generation of illegal castling moves. Example: reb2rk1/ppppqppp/2nb1n2/4p3/4P3/N1P2N2/PB1PQPPP/RE2KBHR[h] w KQacgh - 3 7 --- src/position.cpp | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/position.cpp b/src/position.cpp index a9449cc..def94c0 100644 --- a/src/position.cpp +++ b/src/position.cpp @@ -639,7 +639,7 @@ const string Position::fen() const { if (gating() && gates(WHITE)) for (File f = FILE_A; f <= max_file(); ++f) - if (gates(WHITE) & file_bb(f)) + if ((gates(WHITE) & file_bb(f)) && count_in_hand(WHITE, ALL_PIECES)) ss << char('A' + f); if (can_castle(BLACK_OO)) @@ -650,7 +650,7 @@ const string Position::fen() const { if (gating() && gates(BLACK)) for (File f = FILE_A; f <= max_file(); ++f) - if (gates(BLACK) & file_bb(f)) + if ((gates(BLACK) & file_bb(f)) && count_in_hand(BLACK, ALL_PIECES)) ss << char('a' + f); if (!can_castle(ANY_CASTLING) && !(gating() && (gates(WHITE) | gates(BLACK)))) -- 1.7.0.4