X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fevaluate.cpp;h=49dc07fe671ef0885ca9b5fbfd29a8fd2cc885ad;hb=50a7200b18e96a6f0e2c2ee7fda017ea6f2f1c1f;hp=984a85a65e0492c3daaa46ddc72f06709ae32487;hpb=496c7497cb81de4383f7df42b1836af53e432ce3;p=stockfish diff --git a/src/evaluate.cpp b/src/evaluate.cpp index 984a85a6..49dc07fe 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -577,6 +577,18 @@ Value do_evaluate(const Position& pos, Value& margin) { mobility += MobilityBonus[Piece][mob]; + // 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) @@ -687,7 +699,8 @@ Value do_evaluate(const Position& pos, Value& margin) { & ~ei.attackedBy[Them][0]; if (undefendedMinors) - score += UndefendedMinorPenalty; + score += more_than_one(undefendedMinors) ? UndefendedMinorPenalty * 2 + : UndefendedMinorPenalty; // Enemy pieces not defended by a pawn and under our attack weakEnemies = pos.pieces(Them)