X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fevaluate.cpp;h=11a6fa27db5ff24504d0a08ad9adc3f233318f98;hp=884b1d854722939f90412be2805a98d4d378461d;hb=ad2a0e356e395038a08324f9ff0afee7fc98b8e9;hpb=d438720a1c8115485ff47eeca3b734cd681d01c4 diff --git a/src/evaluate.cpp b/src/evaluate.cpp index 884b1d85..11a6fa27 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -306,7 +306,7 @@ namespace { : Pt == ROOK ? attacks_bb< ROOK>(s, pos.pieces() ^ pos.pieces(QUEEN) ^ pos.pieces(Us, ROOK)) : pos.attacks_from(s); - if (pos.pinned_pieces(Us) & s) + if (pos.blockers_for_king(Us) & s) b &= LineBB[pos.square(Us)][s]; attackedBy2[Us] |= attackedBy[Us][ALL_PIECES] & b; @@ -392,8 +392,8 @@ namespace { if (Pt == QUEEN) { // Penalty if any relative pin or discovered attack against the queen - Bitboard pinners; - if (pos.slider_blockers(pos.pieces(Them, ROOK, BISHOP), s, pinners)) + Bitboard queenPinners; + if (pos.slider_blockers(pos.pieces(Them, ROOK, BISHOP), s, queenPinners)) score -= WeakQueen; } } @@ -413,7 +413,7 @@ namespace { : AllSquares ^ Rank1BB ^ Rank2BB ^ Rank3BB); const Square ksq = pos.square(Us); - Bitboard weak, b, b1, b2, safe, unsafeChecks; + Bitboard weak, b, b1, b2, safe, unsafeChecks, pinned; // King shelter and enemy pawns storm Score score = pe->king_safety(pos, ksq); @@ -464,11 +464,12 @@ namespace { // Unsafe or occupied checking squares will also be considered, as long as // the square is in the attacker's mobility area. unsafeChecks &= mobilityArea[Them]; + pinned = pos.blockers_for_king(Us) & pos.pieces(Us); kingDanger += kingAttackersCount[Them] * kingAttackersWeight[Them] + 102 * kingAdjacentZoneAttacksCount[Them] + 191 * popcount(kingRing[Us] & weak) - + 143 * popcount(pos.pinned_pieces(Us) | unsafeChecks) + + 143 * popcount(pinned | unsafeChecks) - 848 * !pos.count(Them) - 9 * mg_value(score) / 8 + 40;