X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fevaluate.cpp;h=1e5c588a31eb8a357bdf4e54591e8484cc97f1df;hp=2b901bbd166777ad311a2a691bf69538084c48fb;hb=6d8f583af26daa1c158324d5c13cf01b17c746a5;hpb=56a104e2e0c3ec8b156ca1bee0e26c1378459550 diff --git a/src/evaluate.cpp b/src/evaluate.cpp index 2b901bbd..1e5c588a 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -167,6 +167,7 @@ namespace { const Score CloseEnemies = S( 7, 0); const Score Hanging = S( 52, 30); const Score HinderPassedPawn = S( 8, 1); + const Score KnightOnQueen = S( 21, 11); const Score LongRangedBishop = S( 22, 0); const Score MinorBehindPawn = S( 16, 0); const Score PawnlessFlank = S( 20, 80); @@ -489,7 +490,7 @@ namespace { if (!(pos.pieces(PAWN) & kf)) score -= PawnlessFlank; - // Find the squares that opponent attacks in our king flank, and the squares + // Find the squares that opponent attacks in our king flank, and the squares // which are attacked twice in that flank but not defended by our pawns. b1 = attackedBy[Them][ALL_PIECES] & kf & Camp; b2 = b1 & attackedBy2[Them] & ~attackedBy[Us][PAWN]; @@ -595,6 +596,17 @@ namespace { score += ThreatOnQueen * popcount(b & safeThreats); + // Bonus for knight threats on the next moves against enemy queen + if (pos.count(Them) == 1) + { + b = pos.attacks_from(pos.square(Them)) + & attackedBy[Us][KNIGHT] + & ~pos.pieces(Us, PAWN, KING) + & ~stronglyProtected; + + score += KnightOnQueen * popcount(b); + } + if (T) Trace::add(THREAT, Us, score);