Add Colorbound Clobberers (R. Betza)
[vchess.git] / client / src / variants / Losers.js
index 1c087ef..d82e57d 100644 (file)
@@ -5,10 +5,10 @@ import { randInt } from "@/utils/alea";
 export class LosersRules extends ChessRules {
   // Trim all non-capturing moves
   static KeepCaptures(moves) {
-    return moves.filter(m => m.vanish.length == 2);
+    return moves.filter(m => m.vanish.length == 2 && m.appear.length == 1);
   }
 
-       // Stop at the first capture found (if any)
+  // Stop at the first capture found (if any)
   atLeastOneCapture() {
     const color = this.turn;
     const oppCol = V.GetOppCol(color);
@@ -18,7 +18,7 @@ export class LosersRules extends ChessRules {
           this.board[i][j] != V.EMPTY &&
           this.getColor(i, j) != oppCol &&
           this.getPotentialMovesFrom([i, j]).some(m =>
-            // Warning: duscard castle moves
+            // Warning: discard castle moves
             m.vanish.length == 2 && m.appear.length == 1)
         ) {
           return true;
@@ -38,7 +38,8 @@ export class LosersRules extends ChessRules {
 
   getAllValidMoves() {
     const moves = super.getAllValidMoves();
-    if (moves.some(m => m.vanish.length == 2)) return V.KeepCaptures(moves);
+    if (moves.some(m => m.vanish.length == 2 && m.appear.length == 1))
+      return V.KeepCaptures(moves);
     return moves;
   }
 
@@ -64,10 +65,6 @@ export class LosersRules extends ChessRules {
     return this.turn == "w" ? "1-0" : "0-1";
   }
 
-  static get SEARCH_DEPTH() {
-    return 4;
-  }
-
   evalPosition() {
     // Less material is better (more subtle in fact but...)
     return -super.evalPosition();