score -= (TrappedRook - make_score(mob * 22, 0)) * (1 + !pos.can_castle(Us));
}
}
+
+ if (Pt == QUEEN)
+ {
+ // Penalty if any relative pin or discovered attack against the queen
+ if (pos.slider_blockers(pos.pieces(), pos.pieces(Them, ROOK, BISHOP), s))
+ score -= WeakQueen;
+ }
}
if (DoTrace)
& ~(ei.attackedBy[Us][ALL_PIECES] | ei.attackedBy[Them][ALL_PIECES]))
score += LooseEnemies;
- // Bonus for pin or discovered attack on the opponent queen
- if ( pos.count<QUEEN>(Them) == 1
- && pos.slider_blockers(pos.pieces(),
- pos.pieces(Us, ROOK, BISHOP),
- pos.square<QUEEN>(Them)))
- score += WeakQueen;
-
// Non-pawn enemies attacked by a pawn
weak = (pos.pieces(Them) ^ pos.pieces(Them, PAWN)) & ei.attackedBy[Us][PAWN];
Square s = pop_lsb(&b);
assert(pos.pawn_passed(Us, s));
+ assert(!(pos.pieces(PAWN) & forward_bb(Us, s)));
int r = relative_rank(Us, s) - RANK_2;
int rr = r * (r - 1);
// Endgame with opposite-colored bishops, but also other pieces. Still
// a bit drawish, but not as drawish as with only the two bishops.
else
- sf = ScaleFactor(46 * sf / SCALE_FACTOR_NORMAL);
+ sf = ScaleFactor(46);
}
// Endings where weaker side can place his king in front of the opponent's
// pawns are drawish.