else if (!neighbours)
{
- score -= Isolated
- + WeakUnopposed * !opposed;
-
- if ( (ourPawns & forward_file_bb(Them, s))
- && popcount(opposed) == 1
+ if ( opposed
+ && (ourPawns & forward_file_bb(Them, s))
&& !(theirPawns & adjacent_files_bb(s)))
score -= Doubled;
+ else
+ score -= Isolated
+ + WeakUnopposed * !opposed;
}
else if (backward)
- score -= Backward
- + WeakUnopposed * !opposed;
+ score -= Backward
+ + WeakUnopposed * !opposed;
if (!support)
- score -= Doubled * doubled
- + WeakLever * more_than_one(lever);
+ score -= Doubled * doubled
+ + WeakLever * more_than_one(lever);
}
return score;
/// penalty for a king, looking at the king file and the two closest files.
template<Color Us>
-Score Entry::evaluate_shelter(const Position& pos, Square ksq) {
+Score Entry::evaluate_shelter(const Position& pos, Square ksq) const {
constexpr Color Them = ~Us;