Several small improvements + integrate options + first working draft of Cwda
[vchess.git] / client / src / variants / Absorption.js
index c6e1de7..293238d 100644 (file)
@@ -91,10 +91,13 @@ export class AbsorptionRules extends ChessRules {
       );
     });
     moves.forEach(m => {
-      if (m.vanish.length == 2) {
+      if (
+        m.vanish.length == 2 &&
+        m.appear.length == 1 &&
+        piece != m.vanish[1].p
+      ) {
         // Augment pieces abilities in case of captures
-        const piece2 = m.vanish[1].p;
-        if (piece != piece2) m.appear[0].p = V.Fusion(piece, piece2);
+        m.appear[0].p = V.Fusion(piece, m.vanish[1].p);
       }
     });
     return moves;
@@ -113,7 +116,7 @@ export class AbsorptionRules extends ChessRules {
     return (
       this.isAttackedBySlideNJump(sq, color, V.BN, V.steps[V.BISHOP]) ||
       this.isAttackedBySlideNJump(
-        sq, color, V.BN, V.steps[V.KNIGHT], "oneStep")
+        sq, color, V.BN, V.steps[V.KNIGHT], 1)
     );
   }
 
@@ -121,7 +124,7 @@ export class AbsorptionRules extends ChessRules {
     return (
       this.isAttackedBySlideNJump(sq, color, V.RN, V.steps[V.ROOK]) ||
       this.isAttackedBySlideNJump(
-        sq, color, V.RN, V.steps[V.KNIGHT], "oneStep")
+        sq, color, V.RN, V.steps[V.KNIGHT], 1)
     );
   }
 
@@ -130,7 +133,7 @@ export class AbsorptionRules extends ChessRules {
       this.isAttackedBySlideNJump(
         sq, color, V.QN, V.steps[V.BISHOP].concat(V.steps[V.ROOK])) ||
       this.isAttackedBySlideNJump(
-        sq, color, V.QN, V.steps[V.KNIGHT], "oneStep")
+        sq, color, V.QN, V.steps[V.KNIGHT], 1)
     );
   }