X-Git-Url: https://git.auder.net/?a=blobdiff_plain;ds=sidebyside;f=public%2Fjavascripts%2Fvariants%2FExtinction.js;h=2b0aecaa09b51794c8c89859c5d6fb078a74206e;hb=0b7d99ecbb5dedc02cd96c457b5fc2962db9b297;hp=db330d9e31e656d609586a8022e3424d9e776c1f;hpb=a6abf094c35a26019e47fea21302c4be32ff030b;p=vchess.git diff --git a/public/javascripts/variants/Extinction.js b/public/javascripts/variants/Extinction.js index db330d9e..2b0aecaa 100644 --- a/public/javascripts/variants/Extinction.js +++ b/public/javascripts/variants/Extinction.js @@ -3,7 +3,6 @@ class ExtinctionRules extends ChessRules initVariables(fen) { super.initVariables(fen); - const V = VariantRules; this.material = { "w": @@ -27,6 +26,35 @@ class ExtinctionRules extends ChessRules }; } + getPotentialPawnMoves([x,y]) + { + let moves = super.getPotentialPawnMoves([x,y]); + // Add potential promotions into king + const color = this.turn; + const shift = (color == "w" ? -1 : 1); + const lastRank = (color == "w" ? 0 : V.size.x-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.board[x+shift][y-1] != V.EMPTY + && this.canTake([x,y], [x+shift,y-1])) + { + moves.push(this.getBasicMove([x,y], [x+shift,y-1], {c:color,p:V.KING})); + } + if (y { return this.material[color][p] == 0; })) + { + // Very negative (resp. positive) if white (reps. black) pieces set is incomplete + return (color=="w"?-1:1) * V.INFINITY; + } return super.evalPosition(); } }