mirror of
https://github.com/sockspls/badfish
synced 2025-05-01 17:19:36 +00:00
Fix a condition in connected_moves()
When checking if the moving piece p1 in a previous move m1 defends the destination square of a move m2 we have to use the occupancy with the from square of m2 removed so to take in account the case in which f2 will block an x-ray attack from p1. For instance in this position: r2k3r/p1pp1pb1/qn3np1/1N2P3/1p3P2/2B5/PPP3QP/R3K2R b KQ - 1 9 The move eXf6 is connected to the previous move Bc3 that defends the destination square f6. With this patch we have about 10% more moves detected as 'connected'. Anyhow the absolute number is very low, about 4000 more moves out of 6M nodes searched. Another issue spotted by Hongzhi "Hawk Eye" Cheng ;-) new bench: 5757373
This commit is contained in:
parent
94ecdef8ac
commit
bbdf9e4737
1 changed files with 1 additions and 1 deletions
|
@ -1391,7 +1391,7 @@ split_point_start: // At split points actual search starts from here
|
||||||
|
|
||||||
// Case 4: The destination square for m2 is defended by the moving piece in m1
|
// Case 4: The destination square for m2 is defended by the moving piece in m1
|
||||||
p1 = pos.piece_on(t1);
|
p1 = pos.piece_on(t1);
|
||||||
if (pos.attacks_from(p1, t1) & t2)
|
if (pos.attacks_from(p1, t1, pos.pieces() ^ f2) & t2)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
// Case 5: Discovered check, checking piece is the piece moved in m1
|
// Case 5: Discovered check, checking piece is the piece moved in m1
|
||||||
|
|
Loading…
Add table
Reference in a new issue