X-Git-Url: https://git.auder.net/?p=vchess.git;a=blobdiff_plain;f=client%2Fsrc%2Fvariants%2FEmergo.js;fp=client%2Fsrc%2Fvariants%2FEmergo.js;h=a1a98488b23bb989950327137631f7312499a570;hp=aea814d50ed3653a32458003e84397d6e9f8f4ef;hb=665a8844aa49422692f184703944978510106aa7;hpb=d49414beb468a592b0f7d9e2ad322e09e8544c50 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;