From 3c749b9e9c209600240757a60076ce7b9eb56f75 Mon Sep 17 00:00:00 2001 From: Fabian Fichter Date: Fri, 22 Nov 2019 16:50:36 +0100 Subject: [PATCH] Consolidate evaluation of unpromoted soldiers xiangqi LLR: 2.96 (-2.94,2.94) [0.00,10.00] Total: 1678 W: 615 L: 516 D: 547 --- src/evaluate.cpp | 9 ++++++--- src/position.cpp | 3 +++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/evaluate.cpp b/src/evaluate.cpp index 85a4c38..9899090 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -307,6 +307,12 @@ namespace { // Restrict mobility to actual squares of board b &= pos.board_bb(); + if (Pt == SOLDIER && pos.unpromoted_soldier(Us, s)) + { + b &= file_bb(s); + score -= make_score(PieceValue[MG][Pt], PieceValue[EG][Pt]) / 3; + } + if (pos.blockers_for_king(Us) & s) b &= LineBB[pos.square(Us)][s]; @@ -346,9 +352,6 @@ namespace { if (pos.captures_to_hand() && pos.count(Them) && pos.count(Us)) score -= KingProximity * distance(s, pos.square(Us)) * distance(s, pos.square(Them)); - if (Pt == SOLDIER && pos.unpromoted_soldier(Us, s)) - score -= make_score(PieceValue[MG][Pt], PieceValue[EG][Pt]) / 2; - if (Pt == BISHOP || Pt == KNIGHT) { // Bonus if piece is on an outpost square or can reach one diff --git a/src/position.cpp b/src/position.cpp index 92fde7a..e921d83 100644 --- a/src/position.cpp +++ b/src/position.cpp @@ -796,6 +796,9 @@ Bitboard Position::attackers_to(Square s, Bitboard occupied, Color c) const { if (xiangqi_general()) b ^= b & pieces(KING) & ~PseudoAttacks[~c][WAZIR][s]; + if (unpromoted_soldier(c, s)) + b ^= b & pieces(SOLDIER) & ~PseudoAttacks[~c][SHOGI_PAWN][s]; + return b; } -- 1.7.0.4