From c3145c379cc787d8a9ee7df5c76cb9c8236923a0 Mon Sep 17 00:00:00 2001 From: Benjamin Auder Date: Thu, 4 Feb 2021 16:36:40 +0100 Subject: [PATCH] Fix king tracking in Otage variant --- client/src/variants/Otage.js | 11 +++++++++-- client/src/variants/Pacosako.js | 4 ++-- 2 files changed, 11 insertions(+), 4 deletions(-) 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); -- 2.44.0