} else
ttMoves[1].move = killers[0].move = killers[1].move = MOVE_NONE;
- Color us = pos.side_to_move();
-
- dc = p.discovered_check_candidates(us);
- pinned = p.pinned_pieces(us);
+ pinned = p.pinned_pieces(pos.side_to_move());
if (p.is_check())
phasePtr = EvasionsPhaseTable;
case PH_EVASIONS:
assert(pos.is_check());
- lastMove = generate_evasions(pos, moves, pinned);
+ lastMove = generate_evasions(pos, moves);
score_evasions();
return;
case PH_QCHECKS:
// Perhaps we should order moves move here? FIXME
- lastMove = generate_non_capture_checks(pos, moves, dc);
+ lastMove = generate_non_capture_checks(pos, moves);
return;
case PH_STOP:
return move;
break;
- case PH_EVASIONS:
case PH_BAD_CAPTURES:
move = pick_best(curMove++, lastMove).move;
return move;
+ case PH_EVASIONS:
+ move = pick_best(curMove++, lastMove).move;
+ if (pos.pl_move_is_legal(move, pinned))
+ return move;
+ break;
+
case PH_QCAPTURES:
move = pick_best(curMove++, lastMove).move;
if ( move != ttMoves[0].move