Add Fusion and Selfabsorption
[vchess.git] / client / src / variants / Absorption.js
index 64c03e6..33c8351 100644 (file)
@@ -1,6 +1,7 @@
 import { ChessRules } from "@/base_rules";
 
 export class AbsorptionRules extends ChessRules {
+
   getPpath(b) {
     if ([V.BN, V.RN, V.QN].includes(b[1])) return "Absorption/" + b;
     return b;
@@ -90,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;
@@ -147,4 +151,5 @@ export class AbsorptionRules extends ChessRules {
       notation += "=" + move.appear[0].p.toUpperCase();
     return notation;
   }
+
 };