- // If queen and king are far we can safely remove all the squares attacked
- // in the other direction becuase are not reachable by the king anyway.
- if (squares_between(ksq, checksq) || (RookPseudoAttacks[checksq] & (1ULL << ksq)))
- sliderAttacks |= QueenPseudoAttacks[checksq];
-
- // Otherwise, if king and queen are adjacent and on a diagonal line, we need to
- // use real rook attacks to check if king is safe to move in the other direction.
- // For example: king in B2, queen in A1 a knight in B1, and we can safely move to C1.
+ // If queen and king are far or not on a diagonal line we can safely
+ // remove all the squares attacked in the other direction becuase are
+ // not reachable by the king anyway.
+ if (squares_between(ksq, checksq) || !bit_is_set(PseudoAttacks[BISHOP][checksq], ksq))
+ sliderAttacks |= PseudoAttacks[QUEEN][checksq];
+
+ // Otherwise we need to use real rook attacks to check if king is safe
+ // to move in the other direction. For example: king in B2, queen in A1
+ // a knight in B1, and we can safely move to C1.