- // Bonus for safe slider threats on the next move toward enemy queen
- safeThreats = ~pos.pieces(Us) & ~attackedBy2[Them] & attackedBy2[Us];
- b = (attackedBy[Us][BISHOP] & attackedBy[Them][QUEEN_DIAGONAL])
- | (attackedBy[Us][ROOK ] & attackedBy[Them][QUEEN] & ~attackedBy[Them][QUEEN_DIAGONAL]);
+ // Bonus for threats on the next moves against enemy queen
+ if (pos.count<QUEEN>(Them) == 1)
+ {
+ Square s = pos.square<QUEEN>(Them);
+ safeThreats = mobilityArea[Us] & ~stronglyProtected;
+
+ b = attackedBy[Us][KNIGHT] & pos.attacks_from<KNIGHT>(s);
+
+ score += KnightOnQueen * popcount(b & safeThreats);