- // Warning: m.vanish[0] might refer to an empty square! Or self
- const skipPlayUndo = (
- m.vanish.length == 2 &&
- (
- m.vanish[1].c == m.vanish[0].c ||
- this.board[m.vanish[1].x][m.vanish[1].y] == V.EMPTY
- )
- );
- if (!skipPlayUndo) V.PlayOnBoard(this.board, m);
- m.eval = this.evalPosition();
- if (!skipPlayUndo) V.UndoOnBoard(this.board, m);
+ // Warning: m might be illegal!
+ if (!m.illegal) {
+ V.PlayOnBoard(this.board, m);
+ m.eval = this.evalPosition();
+ V.UndoOnBoard(this.board, m);
+ validMoves.push(m);
+ } else illegalMoves.push(m);