X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fevaluate.cpp;h=297d8c65070c0118d71e4a54f819dcf72e19e6d5;hp=6128b45fcad597e7c2ddad68f2ca4b55364f622d;hb=0e508f30bb2129f87b41ab3d721fd0400631f6fc;hpb=68209c9121b54760f03e5f00d6698bca190706ed diff --git a/src/evaluate.cpp b/src/evaluate.cpp index 6128b45f..297d8c65 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -151,9 +151,6 @@ namespace { S(-30,-14), S(-9, -8), S( 0, 9), S( -1, 7) }; - // PassedDanger[Rank] contains a term to weight the passed score - constexpr int PassedDanger[RANK_NB] = { 0, 0, 0, 3, 7, 11, 20 }; - // Assorted bonuses and penalties constexpr Score BishopPawns = S( 3, 7); constexpr Score CloseEnemies = S( 6, 0); @@ -260,6 +257,7 @@ namespace { attackedBy[Us][PAWN] = pe->pawn_attacks(Us); attackedBy[Us][ALL_PIECES] = attackedBy[Us][KING] | attackedBy[Us][PAWN]; attackedBy2[Us] = attackedBy[Us][KING] & attackedBy[Us][PAWN]; + kingRing[Us] = kingAttackersCount[Them] = 0; // Init our king safety tables only if we are going to use them if (pos.non_pawn_material(Them) >= RookValueMg + KnightValueMg) @@ -277,8 +275,6 @@ namespace { kingAttackersCount[Them] = popcount(kingRing[Us] & pe->pawn_attacks(Them)); kingAttacksCount[Them] = kingAttackersWeight[Them] = 0; } - else - kingRing[Us] = kingAttackersCount[Them] = 0; } @@ -418,7 +414,7 @@ namespace { Score score = pe->king_safety(pos); // Find the squares that opponent attacks in our king flank, and the squares - // which are attacked twice in that flank but not defended by our pawns. + // which are attacked twice in that flank. kingFlank = KingFlank[file_of(ksq)]; b1 = attackedBy[Them][ALL_PIECES] & kingFlank & Camp; b2 = b1 & attackedBy2[Them]; @@ -629,12 +625,12 @@ namespace { assert(!(pos.pieces(Them, PAWN) & forward_file_bb(Us, s + Up))); int r = relative_rank(Us, s); - int w = PassedDanger[r]; Score bonus = PassedRank[r]; - if (w) + if (r > RANK_3) { + int w = (r-2) * (r-2) + 2; Square blockSq = s + Up; // Adjust bonus based on the king's proximity @@ -675,7 +671,7 @@ namespace { bonus += make_score(k * w, k * w); } - } // w != 0 + } // rank > RANK_3 // Scale down bonus for candidate passers which need more than one // pawn push to become passed, or have a pawn in front of them.