From 665a8844aa49422692f184703944978510106aa7 Mon Sep 17 00:00:00 2001 From: Benjamin Auder Date: Sun, 24 Jan 2021 15:33:05 +0100 Subject: [PATCH] Fix shadow piece bug: reserve count is now updated as expected --- client/src/variants/Emergo.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/client/src/variants/Emergo.js b/client/src/variants/Emergo.js index aea814d5..a1a98488 100644 --- a/client/src/variants/Emergo.js +++ b/client/src/variants/Emergo.js @@ -479,7 +479,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 +501,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; -- 2.44.0