// Restrict mobility to actual squares of board
b &= pos.board_bb();
- if (Pt == SOLDIER && pos.unpromoted_soldier(Us, s))
- score -= make_score(PieceValue[MG][Pt], PieceValue[EG][Pt]) / 3;
-
if (pos.blockers_for_king(Us) & s)
b &= LineBB[pos.square<KING>(Us)][s];
: pt == KING ? KingBonus[std::min(r, RANK_8)][std::min(f, FILE_D)]
: pt <= QUEEN ? Bonus[pc][std::min(r, RANK_8)][std::min(f, FILE_D)]
: make_score(5, 5) * (2 * f + std::max(std::min(r, Rank(v->maxRank - r)), RANK_1) - 8));
+ if (pt == SOLDIER && r < v->soldierPromotionRank)
+ psq[pc][s] -= score * (v->soldierPromotionRank - r) / (4 + f);
psq[~pc][rank_of(s) <= v->maxRank ? relative_square(BLACK, s, v->maxRank) : s] = -psq[pc][s];
}
// pieces in pocket
ImmobilePieceValueMg = 100, ImmobilePieceValueEg = 100,
CannonPieceValueMg = 800, CannonPieceValueEg = 700,
JanggiCannonPieceValueMg = 800, JanggiCannonPieceValueEg = 600,
- SoldierValueMg = 150, SoldierValueEg = 300,
+ SoldierValueMg = 200, SoldierValueEg = 270,
HorseValueMg = 500, HorseValueEg = 800,
ElephantValueMg = 300, ElephantValueEg = 300,
- JanggiElephantValueMg = 350, JanggiElephantValueEg = 350,
+ JanggiElephantValueMg = 340, JanggiElephantValueEg = 350,
BannerValueMg = 3400, BannerValueEg = 3500,
- WazirValueMg = 400, WazirValueEg = 400,
+ WazirValueMg = 400, WazirValueEg = 350,
CommonerValueMg = 700, CommonerValueEg = 900,
CentaurValueMg = 1600, CentaurValueEg = 1700,