X-Git-Url: https://git.auder.net/?p=vchess.git;a=blobdiff_plain;f=public%2Fjavascripts%2Fvariants%2FAlice.js;h=57c7b25cf47b43d10b2eddfe2582267920f66f95;hp=2788e2101701cc60621bf6e973a96cf45eaa5de1;hb=b6487fb9c41705187cf97215fc9e8f86a59057c7;hpb=f5722ecec4798fb46dc5c62ad4243139bcdd1032 diff --git a/public/javascripts/variants/Alice.js b/public/javascripts/variants/Alice.js index 2788e210..57c7b25c 100644 --- a/public/javascripts/variants/Alice.js +++ b/public/javascripts/variants/Alice.js @@ -95,11 +95,25 @@ class AliceRules extends ChessRules const pieces = Object.keys(V.ALICE_CODES); const codes = Object.keys(V.ALICE_PIECES); const mirrorSide = (pieces.includes(this.getPiece(x,y)) ? 1 : 2); + const color = this.getColor(x,y); // Search valid moves on sideBoard let saveBoard = this.board; this.board = sideBoard || this.getSideBoard(mirrorSide); - let moves = super.getPotentialMovesFrom([x,y]); + let moves = super.getPotentialMovesFrom([x,y]) + .filter(m => { + // Filter out king moves which result in under-check position on + // current board (before mirror traversing) + let aprioriValid = true; + if (m.appear[0].p == V.KING) + { + this.play(m); + if (this.underCheck(color)) + aprioriValid = false; + this.undo(m); + } + return aprioriValid; + }); this.board = saveBoard; // Finally filter impossible moves