X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fevaluate.cpp;h=12329fcdceef82a7872aa2f43af3c8dfd1344e2f;hb=0da1d6a84612c8443b3e3c9b3f74890635ce23e2;hp=cf164cda786d94260b1a5c5b7d0ac651cf9bc9c2;hpb=54b7da120f6d88f66c22598fb2d1df29e9a17a9c;p=stockfish diff --git a/src/evaluate.cpp b/src/evaluate.cpp index cf164cda..12329fcd 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -936,6 +936,13 @@ namespace { b2 = squares_in_front_of(us, s); b3 = b2 & ei.attacked_by(them); b4 = b2 & ei.attacked_by(us); + + // If there is an enemy rook or queen attacking the pawn from behind, + // add all X-ray attacks by the rook or queen. + if(bit_is_set(ei.attacked_by(them,ROOK)|ei.attacked_by(them,QUEEN),s) + && squares_behind(us, s) & pos.rooks_and_queens(them)) + b3 = b2; + if((b2 & pos.pieces_of_color(them)) == EmptyBoardBB) { // There are no enemy pieces in the pawn's path! Are any of the // squares in the pawn's path attacked by the enemy?