From: Benjamin Auder <benjamin.auder@somewhere>
Date: Thu, 4 Feb 2021 15:36:40 +0000 (+0100)
Subject: Fix king tracking in Otage variant
X-Git-Url: https://git.auder.net/variants/img/doc/html/pieces/cn.svg?a=commitdiff_plain;h=c3145c379cc787d8a9ee7df5c76cb9c8236923a0;p=vchess.git

Fix king tracking in Otage variant
---

diff --git a/client/src/variants/Otage.js b/client/src/variants/Otage.js
index 2a8891ff..451059aa 100644
--- a/client/src/variants/Otage.js
+++ b/client/src/variants/Otage.js
@@ -704,8 +704,8 @@ export class OtageRules extends ChessRules {
     const lm = this.lastMoveEnd[L-1];
     const piece =
       !!lm
-        ? lm.p :
-        this.getPiece(move.vanish[0].x, move.vanish[0].y);
+        ? lm.p
+        : this.getPiece(move.vanish[0].x, move.vanish[0].y);
     if (piece == V.KING)
       this.kingPos[c] = [move.appear[0].x, move.appear[0].y];
     this.updateCastleFlags(move, piece);
@@ -762,6 +762,13 @@ export class OtageRules extends ChessRules {
   postUndo(move) {
     if (this.getPiece(move.start.x, move.start.y) == V.KING)
       this.kingPos[this.turn] = [move.start.x, move.start.y];
+    else {
+      // Check if a king is being released: put it on releasing square
+      const L = this.lastMoveEnd.length;
+      const lm = this.lastMoveEnd[L-1];
+      if (!!lm && lm.p == V.KING)
+        this.kingPos[this.turn] = [move.start.x, move.start.y];
+    }
   }
 
   getCurrentScore() {
diff --git a/client/src/variants/Pacosako.js b/client/src/variants/Pacosako.js
index 158abf22..0b27be4a 100644
--- a/client/src/variants/Pacosako.js
+++ b/client/src/variants/Pacosako.js
@@ -768,8 +768,8 @@ export class PacosakoRules extends ChessRules {
     // NOTE: lm.p != V.KING, always.
     const piece =
       !!lm
-        ? lm.p :
-        this.getPiece(move.vanish[0].x, move.vanish[0].y);
+        ? lm.p
+        : this.getPiece(move.vanish[0].x, move.vanish[0].y);
     if (piece == V.KING)
       this.kingPos[c] = [move.appear[0].x, move.appear[0].y];
     this.updateCastleFlags(move, piece);