diff --git a/src/pawns.cpp b/src/pawns.cpp index 7b3dd818..d2ef33e6 100644 --- a/src/pawns.cpp +++ b/src/pawns.cpp @@ -236,7 +236,8 @@ 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 }; @@ -257,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]; }