// Penalties for enemy's safe checks
const int QueenContactCheck = 89;
- const int RookContactCheck = 71;
const int QueenCheck = 50;
- const int RookCheck = 37;
+ const int RookCheck = 45;
const int BishopCheck = 6;
const int KnightCheck = 14;
attackUnits += QueenContactCheck * popcount<Max15>(b);
}
- // Analyse the enemy's safe rook contact checks. Firstly, find the
- // undefended squares around the king reachable by the enemy rooks...
- b = undefended & ei.attackedBy[Them][ROOK] & ~pos.pieces(Them);
-
- // Consider only squares where the enemy's rook gives check
- b &= PseudoAttacks[ROOK][ksq];
-
- if (b)
- {
- // ...and then remove squares not supported by another enemy piece
- b &= ( ei.attackedBy[Them][PAWN] | ei.attackedBy[Them][KNIGHT]
- | ei.attackedBy[Them][BISHOP]);
-
- if (b)
- attackUnits += RookContactCheck * popcount<Max15>(b);
- }
-
// Analyse the enemy's safe distance checks for sliders and knights
safe = ~(ei.attackedBy[Us][ALL_PIECES] | pos.pieces(Them));