diff --git a/src/endgame.cpp b/src/endgame.cpp index 55e4483d..db67ce95 100644 --- a/src/endgame.cpp +++ b/src/endgame.cpp @@ -631,29 +631,8 @@ ScaleFactor Endgame::operator()(const Position& pos) const { // Case 2: Opposite colored bishops if (opposite_colors(strongBishopSq, weakBishopSq)) - { - // We assume that the position is drawn in the following three situations: - // - // a. The pawn is on rank 5 or further back. - // b. The defending king is somewhere in the pawn's path. - // c. The defending bishop attacks some square along the pawn's path, - // and is at least three squares away from the pawn. - // - // These rules are probably not perfect, but in practice they work - // reasonably well. + return SCALE_FACTOR_DRAW; - if (relative_rank(strongSide, pawnSq) <= RANK_5) - return SCALE_FACTOR_DRAW; - - Bitboard path = forward_file_bb(strongSide, pawnSq); - - if (path & pos.pieces(weakSide, KING)) - return SCALE_FACTOR_DRAW; - - if ( (pos.attacks_from(weakBishopSq) & path) - && distance(weakBishopSq, pawnSq) >= 3) - return SCALE_FACTOR_DRAW; - } return SCALE_FACTOR_NONE; } diff --git a/src/evaluate.cpp b/src/evaluate.cpp index 69c32785..f4811aea 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -800,11 +800,10 @@ namespace { { if (pos.opposite_bishops()) { - // Endgame with opposite-colored bishops and no other pieces (ignoring pawns) - // is almost a draw, in case of KBP vs KB, it is even more a draw. + // Endgame with opposite-colored bishops and no other pieces is almost a draw if ( pos.non_pawn_material(WHITE) == BishopValueMg && pos.non_pawn_material(BLACK) == BishopValueMg) - sf = more_than_one(pos.pieces(PAWN)) ? 31 : 9; + sf = 31; // Endgame with opposite-colored bishops, but also other pieces. Still // a bit drawish, but not as drawish as with only the two bishops.