X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fpawns.cpp;h=d2ef33e61e499cef4a466d91a1d076de7d36830d;hp=7fcdded6375b92f72beb6db6dd556775d6a44770;hb=82f7d507eaf83e27a33bf0b433be08d23320b6fe;hpb=d5e3e7d207538fe3ff0c86df9d9f95912f5266e9 diff --git a/src/pawns.cpp b/src/pawns.cpp index 7fcdded6..d2ef33e6 100644 --- a/src/pawns.cpp +++ b/src/pawns.cpp @@ -236,18 +236,17 @@ Entry* probe(const Position& pos) { template Value Entry::shelter_storm(const Position& pos, Square ksq) { - constexpr Color Them = (Us == WHITE ? BLACK : WHITE); + constexpr Color Them = (Us == WHITE ? BLACK : WHITE); + constexpr Direction Down = (Us == WHITE ? SOUTH : NORTH); enum { BlockedByKing, Unopposed, BlockedByPawn, Unblocked }; - File center = std::max(FILE_B, std::min(FILE_G, file_of(ksq))); - Bitboard b = pos.pieces(PAWN) - & (forward_ranks_bb(Us, ksq) | rank_bb(ksq)) - & (adjacent_files_bb(center) | file_bb(center)); + Bitboard b = pos.pieces(PAWN) & (forward_ranks_bb(Us, ksq) | rank_bb(ksq)); Bitboard ourPawns = b & pos.pieces(Us); Bitboard theirPawns = b & pos.pieces(Them); Value safety = MaxSafetyBonus; + File center = std::max(FILE_B, std::min(FILE_G, file_of(ksq))); for (File f = File(center - 1); f <= File(center + 1); ++f) { b = ourPawns & file_bb(f); @@ -259,9 +258,9 @@ Value Entry::shelter_storm(const Position& pos, Square ksq) { int d = std::min(f, ~f); safety -= ShelterWeakness[f == file_of(ksq)][d][rkUs] + StormDanger - [f == file_of(ksq) && rkThem == relative_rank(Us, ksq) + 1 ? BlockedByKing : - rkUs == RANK_1 ? Unopposed : - rkThem == rkUs + 1 ? BlockedByPawn : Unblocked] + [(shift(b) & ksq) ? BlockedByKing : + rkUs == RANK_1 ? Unopposed : + rkThem == (rkUs + 1) ? BlockedByPawn : Unblocked] [d][rkThem]; }