mirror of
https://github.com/sockspls/badfish
synced 2025-04-29 16:23:09 +00:00
Fix bug in evaluate_passed_pawns()
If blockSq is already on rank 8, blockSq + pawn_push(Us) is on rank 9, outside of board. It does not make sense to measure king distance to a field outside the board. Bug spotted by Fruity: http://open-chess.org/viewtopic.php?f=5&t=1156&start=10 Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
8447248705
commit
b1929960f9
1 changed files with 5 additions and 2 deletions
|
@ -812,9 +812,12 @@ namespace {
|
|||
Square blockSq = s + pawn_push(Us);
|
||||
|
||||
// Adjust bonus based on kings proximity
|
||||
ebonus -= Value(square_distance(pos.king_square(Us), blockSq) * 3 * rr);
|
||||
ebonus -= Value(square_distance(pos.king_square(Us), blockSq + pawn_push(Us)) * rr);
|
||||
ebonus += Value(square_distance(pos.king_square(Them), blockSq) * 6 * rr);
|
||||
ebonus -= Value(square_distance(pos.king_square(Us), blockSq) * 3 * rr);
|
||||
|
||||
// If blockSq is not the queening square then consider also a second push
|
||||
if (square_rank(blockSq) != (Us == WHITE ? RANK_8 : RANK_1))
|
||||
ebonus -= Value(square_distance(pos.king_square(Us), blockSq + pawn_push(Us)) * rr);
|
||||
|
||||
// If the pawn is free to advance, increase bonus
|
||||
if (pos.square_is_empty(blockSq))
|
||||
|
|
Loading…
Add table
Reference in a new issue