mobility += MobilityBonus[Piece][mob];
- if (Piece == BISHOP && (PseudoAttacks[Piece][pos.king_square(Them)] & s)) {
- const Bitboard between = BetweenBB[s][pos.king_square(Them)] & pos.pieces();
- if (!more_than_one(between))
- score += make_score(25, 25);
- // Add a bonus if a slider is pinning an enemy piece
- if ( (Piece == BISHOP || Piece == ROOK || Piece == QUEEN)
- && (PseudoAttacks[Piece][pos.king_square(Them)] & s))
- {
- b = BetweenBB[s][pos.king_square(Them)] & pos.pieces();
-
- assert(b);
-
- if (!more_than_one(b) && (b & pos.pieces(Them)))
- score += ThreatBonus[Piece][type_of(pos.piece_on(lsb(b)))];
-- }
--
// Decrease score if we are attacked by an enemy pawn. Remaining part
// of threat evaluation must be done later when we have full attack info.
if (ei.attackedBy[Them][PAWN] & s)
score -= ThreatenedByPawnPenalty[Piece];
++ else if (Piece == BISHOP && (PseudoAttacks[Piece][pos.king_square(Them)] & s)) {
++ const Bitboard between = BetweenBB[s][pos.king_square(Them)] & pos.pieces();
++ if (!more_than_one(between))
++ score += make_score(15, 25);
++ }
// Bishop and knight outposts squares
if ( (Piece == BISHOP || Piece == KNIGHT)