Bishop pins only
authorGary Linscott <glinscott@gmail.com>
Mon, 11 Feb 2013 15:26:18 +0000 (10:26 -0500)
committerGary Linscott <glinscott@gmail.com>
Mon, 11 Feb 2013 15:26:18 +0000 (10:26 -0500)
1  2 
src/evaluate.cpp

index e29b9b0f43ba9306fc39425a4bdadec829b9244d,49dc07fe671ef0885ca9b5fbfd29a8fd2cc885ad..183f166a8e3c8b1e37ffe91188c0858a8a6e4cd1
@@@ -577,16 -577,22 +577,15 @@@ Value do_evaluate(const Position& pos, 
  
          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)