diff --git a/src/evaluate.cpp b/src/evaluate.cpp index c2b94b75..29d71ea9 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -787,6 +787,12 @@ namespace { sf = ScaleFactor(50 * sf / SCALE_FACTOR_NORMAL); } + // Stealmate detection + Color stm = pos.side_to_move(); + if ( (ei.attackedBy[stm][ALL_PIECES] == ei.attackedBy[stm][KING]) + && (!(ei.attackedBy[stm][KING] & ~ei.attackedBy[~stm][ALL_PIECES]))) + sf = SCALE_FACTOR_DRAW; + // Interpolate between a middlegame and a (scaled by 'sf') endgame score Value v = mg_value(score) * int(ei.mi->game_phase()) + eg_value(score) * int(PHASE_MIDGAME - ei.mi->game_phase()) * sf / SCALE_FACTOR_NORMAL;