// which piece type attacks which one. Attacks on lesser pieces which are
// pawn-defended are not considered.
constexpr Score ThreatByMinor[PIECE_TYPE_NB] = {
- S(0, 0), S(0, 31), S(39, 42), S(57, 44), S(68, 112), S(47, 120)
+ S(0, 0), S(0, 31), S(39, 42), S(57, 44), S(68, 112), S(62, 120)
};
constexpr Score ThreatByRook[PIECE_TYPE_NB] = {
- S(0, 0), S(0, 24), S(38, 71), S(38, 61), S(0, 38), S(36, 38)
+ S(0, 0), S(0, 24), S(38, 71), S(38, 61), S(0, 38), S(51, 38)
};
// PassedRank[Rank] contains a bonus according to the rank of a passed pawn
kingDanger += kingAttackersCount[Them] * kingAttackersWeight[Them]
+ 69 * kingAttacksCount[Them]
+ 185 * popcount(kingRing[Us] & weak)
- + 129 * popcount(pos.blockers_for_king(Us) | unsafeChecks)
+ + 150 * popcount(pos.blockers_for_king(Us) | unsafeChecks)
+ 4 * tropism
- 873 * !pos.count<QUEEN>(Them)
- 6 * mg_value(score) / 8
score += ThreatByMinor[type_of(pos.piece_on(s))];
if (type_of(pos.piece_on(s)) != PAWN)
score += ThreatByRank * (int)relative_rank(Them, s);
-
- else if (pos.blockers_for_king(Them) & s)
- score += ThreatByRank * (int)relative_rank(Them, s) / 2;
}
b = weak & attackedBy[Us][ROOK];
score += ThreatByRook[type_of(pos.piece_on(s))];
if (type_of(pos.piece_on(s)) != PAWN)
score += ThreatByRank * (int)relative_rank(Them, s);
-
- else if (pos.blockers_for_king(Them) & s)
- score += ThreatByRank * (int)relative_rank(Them, s) / 2;
}
if (weak & attackedBy[Us][KING])