Change castle flags. Eightpieces still not OK, but almost
[vchess.git] / client / src / variants / Wormhole.js
index b04efa9..462cb3b 100644 (file)
@@ -154,16 +154,16 @@ export const VariantRules = class WormholeRules extends ChessRules {
       }
     }
     // Captures
-    const finalPieces = x + shiftX == lastRank
-      ? [V.ROOK, V.KNIGHT, V.BISHOP, V.QUEEN]
-      : [V.PAWN];
     for (let shiftY of [-1, 1]) {
       const sq = this.getSquareAfter([x,y], [shiftX,shiftY]);
       if (
-        sq &&
+        !!sq &&
         this.board[sq[0]][sq[1]] != V.EMPTY &&
         this.canTake([x, y], [sq[0], sq[1]])
       ) {
+        const finalPieces = sq[0] == lastRank
+          ? [V.ROOK, V.KNIGHT, V.BISHOP, V.QUEEN]
+          : [V.PAWN];
         for (let piece of finalPieces) {
           moves.push(
             this.getBasicMove([x, y], [sq[0], sq[1]], {
@@ -264,6 +264,8 @@ export const VariantRules = class WormholeRules extends ChessRules {
     return this.isAttackedByJump(sq, colors, V.KING, V.steps[V.KING]);
   }
 
+  // NOTE: altering move in getBasicMove doesn't work and wouldn't be logical.
+  // This is a side-effect on board generated by the move.
   static PlayOnBoard(board, move) {
     board[move.vanish[0].x][move.vanish[0].y] = V.HOLE;
     for (let psq of move.appear) board[psq.x][psq.y] = psq.c + psq.p;
@@ -276,6 +278,10 @@ export const VariantRules = class WormholeRules extends ChessRules {
     return this.turn == "w" ? "0-1" : "1-0";
   }
 
+  static get SEARCH_DEPTH() {
+    return 2;
+  }
+
   evalPosition() {
     let evaluation = 0;
     for (let i = 0; i < V.size.x; i++) {
@@ -293,7 +299,7 @@ export const VariantRules = class WormholeRules extends ChessRules {
     const piece = this.getPiece(move.start.x, move.start.y);
     // Indicate start square + dest square, because holes distort the board
     let notation =
-      piece.toUpperCase() +
+      (piece != V.PAWN ? piece.toUpperCase() : "") +
       V.CoordsToSquare(move.start) +
       (move.vanish.length > move.appear.length ? "x" : "") +
       V.CoordsToSquare(move.end);