@@ -185,22 +185,22 @@ namespace {
185185 // which piece type attacks which one. Attacks on lesser pieces which are
186186 // pawn-defended are not considered.
187187 const Score ThreatByMinor[PIECE_TYPE_NB] = {
188- S (0 , 0 ), S (0 , 33 ), S (45 , 43 ), S (46 , 47 ), S (72 , 107 ), S (48 , 118 )
188+ S (0 , 0 ), S (0 , 31 ), S (39 , 42 ), S (57 , 44 ), S (68 , 112 ), S (47 , 120 )
189189 };
190190
191191 const Score ThreatByRook[PIECE_TYPE_NB] = {
192- S (0 , 0 ), S (0 , 25 ), S (40 , 62 ), S (40 , 59 ), S (0 , 34 ), S (35 , 48 )
192+ S (0 , 0 ), S (0 , 24 ), S (38 , 71 ), S (38 , 61 ), S (0 , 38 ), S (36 , 38 )
193193 };
194194
195195 // ThreatByKing[on one/on many] contains bonuses for king attacks on
196196 // pawns or pieces which are not pawn-defended.
197- const Score ThreatByKing[] = { S (3 , 62 ), S (9 , 138 ) };
197+ const Score ThreatByKing[] = { S (3 , 65 ), S (9 , 145 ) };
198198
199199 // Passed[mg/eg][Rank] contains midgame and endgame bonuses for passed pawns.
200200 // We don't use a Score because we process the two components independently.
201201 const Value Passed[][RANK_NB] = {
202- { V (0 ), V (5 ), V ( 5 ), V (31 ), V (73 ), V (166 ), V (252 ) },
203- { V (0 ), V (7 ), V (14 ), V (38 ), V (73 ), V (166 ), V (252 ) }
202+ { V (0 ), V (5 ), V ( 5 ), V (32 ), V (70 ), V (172 ), V (217 ) },
203+ { V (0 ), V (7 ), V (13 ), V (42 ), V (70 ), V (170 ), V (269 ) }
204204 };
205205
206206 // PassedFile[File] contains a bonus according to the file of a passed pawn
@@ -210,7 +210,7 @@ namespace {
210210 };
211211
212212 // Rank factor applied on some bonus for passed pawn on rank 4 or beyond
213- const int RankFactor[RANK_NB] = {0 , 0 , 0 , 2 , 6 , 11 , 16 };
213+ const int RankFactor[RANK_NB] = {0 , 0 , 0 , 2 , 7 , 12 , 19 };
214214
215215 // KingProtector[PieceType-2] contains a bonus according to distance from king
216216 const Score KingProtector[] = { S (-3 , -5 ), S (-4 , -3 ), S (-3 , 0 ), S (-1 , 1 ) };
@@ -224,13 +224,13 @@ namespace {
224224 const Score WeakQueen = S( 50 , 10 );
225225 const Score CloseEnemies = S( 7 , 0 );
226226 const Score PawnlessFlank = S( 20 , 80 );
227- const Score ThreatBySafePawn = S(192 , 175 );
227+ const Score ThreatBySafePawn = S(175 , 168 );
228228 const Score ThreatByRank = S( 16 , 3 );
229- const Score Hanging = S( 48 , 27 );
229+ const Score Hanging = S( 52 , 30 );
230230 const Score WeakUnopposedPawn = S( 5 , 25 );
231- const Score ThreatByPawnPush = S( 38 , 22 );
232- const Score ThreatByAttackOnQueen = S( 38 , 22 );
233- const Score HinderPassedPawn = S( 7 , 0 );
231+ const Score ThreatByPawnPush = S( 47 , 26 );
232+ const Score ThreatByAttackOnQueen = S( 42 , 21 );
233+ const Score HinderPassedPawn = S( 8 , 1 );
234234 const Score TrappedBishopA1H1 = S( 50 , 50 );
235235
236236 #undef S
@@ -689,7 +689,7 @@ namespace {
689689
690690 // If there aren't any enemy attacks, assign a big bonus. Otherwise
691691 // assign a smaller bonus if the block square isn't attacked.
692- int k = !unsafeSquares ? 18 : !(unsafeSquares & blockSq) ? 8 : 0 ;
692+ int k = !unsafeSquares ? 20 : !(unsafeSquares & blockSq) ? 9 : 0 ;
693693
694694 // If the path to the queen is fully defended, assign a big bonus.
695695 // Otherwise assign a smaller bonus if the block square is defended.
0 commit comments