X-Git-Url: https://git.auder.net/?p=vchess.git;a=blobdiff_plain;f=public%2Fjavascripts%2Fvariants%2FExtinction.js;h=9be4b0d78840d5704da9fee73efcd1840638abaf;hp=db330d9e31e656d609586a8022e3424d9e776c1f;hb=1221ac47836806efb287b0323b92957d9129c653;hpb=a6abf094c35a26019e47fea21302c4be32ff030b diff --git a/public/javascripts/variants/Extinction.js b/public/javascripts/variants/Extinction.js index db330d9e..9be4b0d7 100644 --- a/public/javascripts/variants/Extinction.js +++ b/public/javascripts/variants/Extinction.js @@ -27,6 +27,37 @@ class ExtinctionRules extends ChessRules }; } + getPotentialPawnMoves([x,y]) + { + let moves = super.getPotentialPawnMoves([x,y]); + // Add potential promotions into king + const color = this.turn; + const V = VariantRules; + const [sizeX,sizeY] = V.size; + const shift = (color == "w" ? -1 : 1); + const lastRank = (color == "w" ? 0 : sizeX-1); + + if (x+shift == lastRank) + { + // Normal move + if (this.board[x+shift][y] == V.EMPTY) + moves.push(this.getBasicMove([x,y], [x+shift,y], {c:color,p:V.KING})); + // Captures + if (y>0 && this.canTake([x,y], [x+shift,y-1]) + && this.board[x+shift][y-1] != V.EMPTY) + { + moves.push(this.getBasicMove([x,y], [x+shift,y-1], {c:color,p:V.KING})); + } + if (y { return this.material[color][p] == 0; })) + { + return (color=="w"?-1:1) * VariantRules.INFINITY; + } return super.evalPosition(); } }