Several small improvements + integrate options + first working draft of Cwda
[vchess.git] / client / src / variants / Emergo.js
index aea814d..13069de 100644 (file)
@@ -8,6 +8,10 @@ export class EmergoRules extends ChessRules {
   // Lowercase if black controls.
   // Single piece (no prisoners): A@ to L@ (+ lowercase)
 
+  static get Options() {
+    return null;
+  }
+
   static get HasFlags() {
     return false;
   }
@@ -105,7 +109,7 @@ export class EmergoRules extends ChessRules {
     return { x: 9, y: 9 };
   }
 
-  static GenRandInitFen(randomness) {
+  static GenRandInitFen() {
     return "9/9/9/9/9/9/9/9/9 w 0 12,12";
   }
 
@@ -479,7 +483,11 @@ export class EmergoRules extends ChessRules {
         move.notTheEnd = true;
     }
     else if (move.vanish == 0) {
-      if (--this.reserve[color][V.PAWN] == 0) this.reserve[color] = null;
+      const firstCode = (color == 'w' ? 65 : 97);
+      // Generally, reserveCount == 1 (except for shadow piece)
+      const reserveCount = move.appear[0].c.charCodeAt() - firstCode + 1;
+      this.reserve[color][V.PAWN] -= reserveCount;
+      if (this.reserve[color][V.PAWN] == 0) this.reserve[color] = null;
     }
     if (!move.notTheEnd) {
       this.turn = V.GetOppCol(color);
@@ -497,8 +505,10 @@ export class EmergoRules extends ChessRules {
     }
     if (move.vanish.length == 0) {
       const color = (move.appear[0].c == 'A' ? 'w' : 'b');
-      if (!this.reserve[color]) this.reserve[color] = { [V.PAWN]: 1 };
-      else this.reserve[color][V.PAWN]++;
+      const firstCode = (color == 'w' ? 65 : 97);
+      const reserveCount = move.appear[0].c.charCodeAt() - firstCode + 1;
+      if (!this.reserve[color]) this.reserve[color] = { [V.PAWN]: 0 };
+      this.reserve[color][V.PAWN] += reserveCount;
     }
     else if (move.vanish.length == 2) {
       const L0 = this.captures.length;