#undef S
+ Score BishopPinBonus = make_score(66, 11);
+
// Bonus for having the side to move (modified by Joona Kiiski)
const Score Tempo = make_score(24, 11);
KingDangerTable[0][i] = apply_weight(make_score(t, 0), make_score(KingDanger[0], 0));
KingDangerTable[1][i] = apply_weight(make_score(t, 0), make_score(KingDanger[1], 0));
}
+
+ BishopPinBonus = make_score(Options["pin_open"], Options["pin_end"]);
}
// of threat evaluation must be done later when we have full attack info.
if (ei.attackedBy[Them][PAWN] & s)
score -= ThreatenedByPawnPenalty[Piece];
+ else if (Piece == BISHOP && (PseudoAttacks[Piece][pos.king_square(Them)] & s)) {
+ const Bitboard between = BetweenBB[s][pos.king_square(Them)] & pos.pieces();
+ if (!more_than_one(between))
+ score += BishopPinBonus;
+ }
// Bishop and knight outposts squares
if ( (Piece == BISHOP || Piece == KNIGHT)
o["Slow Mover"] = Option(100, 10, 1000);
o["UCI_Chess960"] = Option(false);
o["UCI_AnalyseMode"] = Option(false, on_eval);
+ o["pin_open"] = Option(66, -100, 100, on_eval);
+ o["pin_end"] = Option(11, -100, 100, on_eval);
}