X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fevaluate.cpp;h=48e305efebf569bf1f672168a0f5da293fe748cf;hp=e5e3cb6ccbe6d0f1029d72b51228e95920ea1514;hb=883367d21749eb91a5a3737338b5a7f507751a5a;hpb=6e66e7aae28ab087ad816589c0d54851993f2e4a diff --git a/src/evaluate.cpp b/src/evaluate.cpp index e5e3cb6c..48e305ef 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -160,7 +160,6 @@ namespace { constexpr Score KnightOnQueen = S( 20, 12); constexpr Score LongDiagonalBishop = S( 44, 0); constexpr Score MinorBehindPawn = S( 16, 0); - constexpr Score Overload = S( 12, 6); constexpr Score PawnlessFlank = S( 18, 94); constexpr Score RestrictedPiece = S( 7, 6); constexpr Score RookOnPawn = S( 10, 28); @@ -310,7 +309,7 @@ namespace { attackedBy[Us][Pt] |= b; attackedBy[Us][ALL_PIECES] |= b; - if (b & kingRing[Them]) + if (b & kingRing[Them] & ~double_pawn_attacks_bb(pos.pieces(Them, PAWN))) { kingAttackersCount[Us]++; kingAttackersWeight[Us] += KingAttackWeights[Pt]; @@ -382,7 +381,7 @@ namespace { { File kf = file_of(pos.square(Us)); if ((kf < FILE_E) == (file_of(s) < kf)) - score -= (TrappedRook - make_score(mob * 22, 0)) * (1 + !pos.can_castle(Us)); + score -= (TrappedRook - make_score(mob * 22, 0)) * (1 + !pos.castling_rights(Us)); } } @@ -475,6 +474,7 @@ namespace { + 69 * kingAttacksCount[Them] + 185 * popcount(kingRing[Us] & weak) + 150 * popcount(pos.blockers_for_king(Us) | unsafeChecks) + + tropism * tropism / 4 - 873 * !pos.count(Them) - 6 * mg_value(score) / 8 + mg_value(mobility[Them] - mobility[Us]) @@ -512,7 +512,7 @@ namespace { Score score = SCORE_ZERO; // Non-pawn enemies - nonPawnEnemies = pos.pieces(Them) ^ pos.pieces(Them, PAWN); + nonPawnEnemies = pos.pieces(Them) & ~pos.pieces(Them, PAWN); // Squares strongly protected by the enemy, either because they defend the // square with a pawn, or because they defend the square twice and we don't. @@ -552,10 +552,9 @@ namespace { if (weak & attackedBy[Us][KING]) score += ThreatByKing; - score += Hanging * popcount(weak & ~attackedBy[Them][ALL_PIECES]); - - b = weak & nonPawnEnemies & attackedBy[Them][ALL_PIECES]; - score += Overload * popcount(b); + b = ~attackedBy[Them][ALL_PIECES] + | (nonPawnEnemies & attackedBy2[Us]); + score += Hanging * popcount(weak & b); } // Bonus for restricting their piece moves