- 6 * mg_value(score) / 8
+ mg_value(mobility[Them] - mobility[Us])
+ 3 * kingFlankAttacks * kingFlankAttacks / 8
+ + 500 * pos.xiangqi_general()
- 7;
// Transform the kingDanger units into a Score, and subtract it from the evaluation
bool gating() const;
bool seirawan_gating() const;
bool cambodian_moves() const;
+ bool xiangqi_general() const;
bool unpromoted_soldier(Color c, Square s) const;
// winning conditions
int n_move_rule() const;
return var->cambodianMoves;
}
+inline bool Position::xiangqi_general() const {
+ assert(var != nullptr);
+ return var->xiangqiGeneral;
+}
+
inline bool Position::unpromoted_soldier(Color c, Square s) const {
assert(var != nullptr);
return var->xiangqiSoldier && relative_rank(c, s, var->maxRank) <= RANK_5;