X-Git-Url: https://git.auder.net/?p=vchess.git;a=blobdiff_plain;f=client%2Fsrc%2Fvariants%2FClorange.js;h=e96d8514f26041f92ecafd6c65b25eb4d52a8865;hp=4c54e941ea2bf48f2feb33e4fe734f9b51fda073;hb=165530a519288327f3a6364a43f1b9e73d944a20;hpb=6f10b38369cc92057a25cc0150727aeeeaa6f1d1 diff --git a/client/src/variants/Clorange.js b/client/src/variants/Clorange.js index 4c54e941..e96d8514 100644 --- a/client/src/variants/Clorange.js +++ b/client/src/variants/Clorange.js @@ -168,7 +168,7 @@ export class ClorangeRules extends ChessRules { return this.getReserveMoves([x, y]); // Standard moves switch (this.getPiece(x, y)) { - case 's': return super.getPotentialPawnMoves([x, y]); + case 's': return this.getPotentialPawnMoves([x, y]); case 'u': return super.getPotentialRookMoves([x, y]); case 'o': return super.getPotentialKnightMoves([x, y]); case 'c': return super.getPotentialBishopMoves([x, y]); @@ -180,13 +180,17 @@ export class ClorangeRules extends ChessRules { getPotentialPawnMoves(sq) { let moves = super.getPotentialPawnMoves(sq); - moves.forEach(m => { - if (m.vanish[0].p == 's' && m.appear[0].p != 's') { - // Promotion pieces should be non-violent as well: - const pIdx = ChessRules.PIECES.findIndex(p => p == m.appear[0].p) - m.appear[0].p = V.NON_VIOLENT[pIdx]; - } - }); + if (moves.length > 0 && moves[0].vanish[0].p == 's') { + // Remove captures for non-violent pawns: + moves = moves.filter(m => m.vanish.length == 1); + moves.forEach(m => { + if (m.appear[0].p != 's') { + // Promotion pieces should be non-violent as well: + const pIdx = ChessRules.PIECES.findIndex(p => p == m.appear[0].p) + m.appear[0].p = V.NON_VIOLENT[pIdx]; + } + }); + } return moves; }