From bcc0f655f0cc5e56a25b8f225584a283ad434b65 Mon Sep 17 00:00:00 2001 From: Fabian Fichter Date: Sun, 10 Nov 2019 14:00:24 +0100 Subject: [PATCH] Calculate pins by cannons xiangqi LLR: 3.01 (-2.94,2.94) [0.00,10.00] Total: 868 W: 303 L: 218 D: 347 --- src/position.cpp | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/position.cpp b/src/position.cpp index 05f597f..1eed7d8 100644 --- a/src/position.cpp +++ b/src/position.cpp @@ -722,7 +722,7 @@ Bitboard Position::slider_blockers(Bitboard sliders, Square s, Bitboard& pinners { Bitboard b = sliders & (PseudoAttacks[~c][pt][s] ^ LeaperAttacks[~c][pt][s]) & pieces(c, pt); if (b) - snipers |= b & ~attacks_from(~c, pt, s); + snipers |= b & ~attacks_bb(~c, pt, s, pieces()); } Bitboard occupancy = pieces() ^ snipers; @@ -731,7 +731,7 @@ Bitboard Position::slider_blockers(Bitboard sliders, Square s, Bitboard& pinners Square sniperSq = pop_lsb(&snipers); Bitboard b = between_bb(s, sniperSq) & occupancy; - if (b && !more_than_one(b)) + if (b && (!more_than_one(b) || (type_of(piece_on(sniperSq)) == CANNON && popcount(b) == 2))) { blockers |= b; if (b & pieces(color_of(piece_on(s)))) -- 1.7.0.4