X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fpawns.cpp;h=73a9b904b347757fda1ba601344dfd69f913259b;hp=049e73bf9fb3e41e41ee5e1ee325d93b8b82143a;hb=4f5680950a4e4c55da2877e1be91efd2be1c76ba;hpb=b9bc6e823f061753419e563c4f923e60bd8c6193 diff --git a/src/pawns.cpp b/src/pawns.cpp index 049e73bf..73a9b904 100644 --- a/src/pawns.cpp +++ b/src/pawns.cpp @@ -261,9 +261,14 @@ Score PawnEntry::update_safety(const Position& pos, Square ksq) { kingSquares[Us] = ksq; castleRights[Us] = pos.can_castle(Us); + minKPdistance[Us] = 0; + + Bitboard pawns = pos.pieces(Us, PAWN); + if (pawns) + while (!(DistanceRingsBB[ksq][minKPdistance[Us]++] & pawns)) {} if (relative_rank(Us, ksq) > RANK_4) - return kingSafety[Us] = SCORE_ZERO; + return kingSafety[Us] = make_score(0, -16 * minKPdistance[Us]); Value bonus = shelter_storm(pos, ksq); @@ -274,7 +279,7 @@ Score PawnEntry::update_safety(const Position& pos, Square ksq) { if (pos.can_castle(make_castle_right(Us, QUEEN_SIDE))) bonus = std::max(bonus, shelter_storm(pos, relative_square(Us, SQ_C1))); - return kingSafety[Us] = make_score(bonus, 0); + return kingSafety[Us] = make_score(bonus, -16 * minKPdistance[Us]); } // Explicit template instantiation