X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fpawns.cpp;h=7f8d451a6d47202ba0be9a814d0656ea90282bb4;hb=6c197c3964ca0c637ff1f646dc7e6653b1bb4b45;hp=d365ba121c3e66a9e5bc2852113ecab62b36d4bd;hpb=268c00b648ba4a48be79a849dde5733e6705ddbf;p=stockfish diff --git a/src/pawns.cpp b/src/pawns.cpp index d365ba12..7f8d451a 100644 --- a/src/pawns.cpp +++ b/src/pawns.cpp @@ -38,6 +38,9 @@ namespace { constexpr Score WeakLever = S( 0, 56); constexpr Score WeakUnopposed = S(13, 27); + // Bonus for blocked pawns at 5th or 6th rank + constexpr Score BlockedPawn[2] = { S(-11, -4), S(-3, 4) }; + constexpr Score BlockedStorm[RANK_NB] = { S(0, 0), S(0, 0), S(76, 78), S(-10, 15), S(-7, 10), S(-4, 6), S(-1, 2) }; @@ -145,7 +148,7 @@ namespace { // Score this pawn if (support | phalanx) { - int v = Connected[r] * (4 + 2 * bool(phalanx) - 2 * bool(opposed) - bool(blocked)) / 2 + int v = Connected[r] * (2 + bool(phalanx) - bool(opposed)) + 21 * popcount(support); score += make_score(v, v * (r - 2) / 4); @@ -169,6 +172,9 @@ namespace { if (!support) score -= Doubled * doubled + WeakLever * more_than_one(lever); + + if (blocked && r > RANK_4) + score += BlockedPawn[r-4]; } return score;