X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fpawns.cpp;h=cee744134f4f779031f73bd65aa20547367ce545;hp=fb91afcb7f7aedfde6a4c97c205b0981c92c460a;hb=14548312203bcd164f3bfb778c7e29abd89109dd;hpb=471f7a1b5c4da03a712da2ce079034de45b4c35b diff --git a/src/pawns.cpp b/src/pawns.cpp index fb91afcb..cee74413 100644 --- a/src/pawns.cpp +++ b/src/pawns.cpp @@ -131,7 +131,7 @@ namespace { stoppers = theirPawns & passed_pawn_mask(Us, s); lever = theirPawns & pawnAttacksBB[s]; leverPush = theirPawns & pawnAttacksBB[s + Up]; - doubled = ourPawns & (s + Up); + doubled = ourPawns & (s - Up); neighbours = ourPawns & adjacent_files_bb(f); phalanx = neighbours & rank_bb(s); supported = neighbours & rank_bb(s - Up); @@ -177,8 +177,8 @@ namespace { if (connected) score += Connected[opposed][!!phalanx][more_than_one(supported)][relative_rank(Us, s)]; - if (doubled) - score -= Doubled; + if (doubled && !supported) + score -= Doubled; if (lever) score += Lever[relative_rank(Us, s)]; @@ -256,12 +256,13 @@ Value Entry::shelter_storm(const Position& pos, Square ksq) { b = theirPawns & file_bb(f); Rank rkThem = b ? relative_rank(Us, frontmost_sq(Them, b)) : RANK_1; - safety -= ShelterWeakness[std::min(f, FILE_H - f)][rkUs] + int d = std::min(f, FILE_H - f); + safety -= ShelterWeakness[d][rkUs] + StormDanger [f == file_of(ksq) && rkThem == relative_rank(Us, ksq) + 1 ? BlockedByKing : rkUs == RANK_1 ? Unopposed : rkThem == rkUs + 1 ? BlockedByPawn : Unblocked] - [std::min(f, FILE_H - f)][rkThem]; + [d][rkThem]; } return safety;