From: Benjamin Auder Date: Thu, 4 Feb 2021 15:36:40 +0000 (+0100) Subject: Fix king tracking in Otage variant X-Git-Url: https://git.auder.net/doc/html/packages.html?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);