const Score OtherCheck = S(10, 10);
const Score ThreatByHangingPawn = S(71, 61);
const Score LooseEnemies = S( 0, 25);
- const Score WeakQueen = S(35, 0);
+ const Score WeakQueen = S(50, 10);
const Score Hanging = S(48, 27);
const Score ThreatByPawnPush = S(38, 22);
- const Score Unstoppable = S( 0, 20);
+ const Score Unstoppable = S( 0, 45);
const Score PawnlessFlank = S(20, 80);
const Score HinderPassedPawn = S( 7, 0);
const Score ThreatByRank = S(16, 3);
Square ksq = pos.square<KING>(Us);
if ( ((file_of(ksq) < FILE_E) == (file_of(s) < file_of(ksq)))
- && (rank_of(ksq) == rank_of(s) || relative_rank(Us, ksq) == RANK_1)
&& !ei.pi->semiopen_side(Us, file_of(ksq), file_of(s) < file_of(ksq)))
score -= (TrappedRook - make_score(mob * 22, 0)) * (1 + !pos.can_castle(Us));
}
// If both sides have only pawns, score for potential unstoppable pawns
if (!pos.non_pawn_material(WHITE) && !pos.non_pawn_material(BLACK))
{
- Bitboard b;
- if ((b = ei.pi->passed_pawns(WHITE)) != 0)
- score += Unstoppable * int(relative_rank(WHITE, frontmost_sq(WHITE, b)));
+ if (ei.pi->passed_pawns(WHITE))
+ score += Unstoppable;
- if ((b = ei.pi->passed_pawns(BLACK)) != 0)
- score -= Unstoppable * int(relative_rank(BLACK, frontmost_sq(BLACK, b)));
+ if (ei.pi->passed_pawns(BLACK))
+ score -= Unstoppable;
}
// Evaluate space for both sides, only during opening