mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 16:53:09 +00:00
Merge Gary's bishop_pin patch
Give a bonus if a bishop can pin a piece or can give a discovered check through an x-ray attack. Seems good after 24000 games at 15"+0.05 (single thread): ELO: 12.30 +- 99%: 5.79 95%: 4.40 LOS: 100.00% Total: 24000 W: 4931 L: 4082 D: 14987 bench: 4917064
This commit is contained in:
commit
9a1d5f0f1d
1 changed files with 10 additions and 14 deletions
|
@ -150,6 +150,8 @@ namespace {
|
||||||
|
|
||||||
#undef S
|
#undef S
|
||||||
|
|
||||||
|
const Score BishopPinBonus = make_score(66, 11);
|
||||||
|
|
||||||
// Bonus for having the side to move (modified by Joona Kiiski)
|
// Bonus for having the side to move (modified by Joona Kiiski)
|
||||||
const Score Tempo = make_score(24, 11);
|
const Score Tempo = make_score(24, 11);
|
||||||
|
|
||||||
|
@ -577,23 +579,18 @@ Value do_evaluate(const Position& pos, Value& margin) {
|
||||||
|
|
||||||
mobility += MobilityBonus[Piece][mob];
|
mobility += MobilityBonus[Piece][mob];
|
||||||
|
|
||||||
// Add a bonus if a slider is pinning an enemy piece
|
|
||||||
if ( (Piece == BISHOP || Piece == ROOK || Piece == QUEEN)
|
|
||||||
&& (PseudoAttacks[Piece][pos.king_square(Them)] & s))
|
|
||||||
{
|
|
||||||
b = BetweenBB[s][pos.king_square(Them)] & pos.pieces();
|
|
||||||
|
|
||||||
assert(b);
|
|
||||||
|
|
||||||
if (!more_than_one(b) && (b & pos.pieces(Them)))
|
|
||||||
score += ThreatBonus[Piece][type_of(pos.piece_on(lsb(b)))];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Decrease score if we are attacked by an enemy pawn. Remaining part
|
// Decrease score if we are attacked by an enemy pawn. Remaining part
|
||||||
// of threat evaluation must be done later when we have full attack info.
|
// of threat evaluation must be done later when we have full attack info.
|
||||||
if (ei.attackedBy[Them][PAWN] & s)
|
if (ei.attackedBy[Them][PAWN] & s)
|
||||||
score -= ThreatenedByPawnPenalty[Piece];
|
score -= ThreatenedByPawnPenalty[Piece];
|
||||||
|
|
||||||
|
// Otherwise give a bonus if we are a bishop and can pin a piece or
|
||||||
|
// can give a discovered check through an x-ray attack.
|
||||||
|
else if ( Piece == BISHOP
|
||||||
|
&& (PseudoAttacks[Piece][pos.king_square(Them)] & s)
|
||||||
|
&& !more_than_one(BetweenBB[s][pos.king_square(Them)] & pos.pieces()))
|
||||||
|
score += BishopPinBonus;
|
||||||
|
|
||||||
// Bishop and knight outposts squares
|
// Bishop and knight outposts squares
|
||||||
if ( (Piece == BISHOP || Piece == KNIGHT)
|
if ( (Piece == BISHOP || Piece == KNIGHT)
|
||||||
&& !(pos.pieces(Them, PAWN) & attack_span_mask(Us, s)))
|
&& !(pos.pieces(Them, PAWN) & attack_span_mask(Us, s)))
|
||||||
|
@ -699,8 +696,7 @@ Value do_evaluate(const Position& pos, Value& margin) {
|
||||||
& ~ei.attackedBy[Them][0];
|
& ~ei.attackedBy[Them][0];
|
||||||
|
|
||||||
if (undefendedMinors)
|
if (undefendedMinors)
|
||||||
score += more_than_one(undefendedMinors) ? UndefendedMinorPenalty * 2
|
score += UndefendedMinorPenalty;
|
||||||
: UndefendedMinorPenalty;
|
|
||||||
|
|
||||||
// Enemy pieces not defended by a pawn and under our attack
|
// Enemy pieces not defended by a pawn and under our attack
|
||||||
weakEnemies = pos.pieces(Them)
|
weakEnemies = pos.pieces(Them)
|
||||||
|
|
Loading…
Add table
Reference in a new issue