X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fvariants%2FBalaklava.js;h=6a38a51c33feb4af68211106fcd74e3436ad0afd;hb=4313762da3237b04f204e121a20cab3ba7bb5dd2;hp=3a04e1d0669bffe998970d286df6150957828f70;hpb=a0224b03c91dd83a6e133378b85591a1a64e427b;p=vchess.git diff --git a/client/src/variants/Balaklava.js b/client/src/variants/Balaklava.js index 3a04e1d0..6a38a51c 100644 --- a/client/src/variants/Balaklava.js +++ b/client/src/variants/Balaklava.js @@ -1,6 +1,7 @@ import { ChessRules } from "@/base_rules"; export class BalaklavaRules extends ChessRules { + static get PawnSpecs() { return Object.assign( {}, @@ -45,11 +46,10 @@ export class BalaklavaRules extends ChessRules { ); } - static GenRandInitFen(randomness) { + static GenRandInitFen(options) { // No collision between 'n' and castle flags, so next replacement is fine return ( - ChessRules.GenRandInitFen(randomness) - .replace(/n/g, 'm').replace(/N/g, 'M') + ChessRules.GenRandInitFen(options).replace(/n/g, 'm').replace(/N/g, 'M') ); } @@ -61,8 +61,19 @@ export class BalaklavaRules extends ChessRules { : super.getPotentialMovesFrom([x, y]); if (piece != V.KING) { // Add non-capturing knight movements - const lastRank = (this.turn == 'w' ? 0 : 7); + const color = this.turn; + const lastRank = (color == 'w' ? 0 : 7); V.steps[V.KNIGHT].forEach(step => { + // Pawns cannot go backward: + if ( + piece == V.PAWN && + ( + (color == 'w' && step[0] > 0) || + (color == 'b' && step[0] < 0) + ) + ) { + return; + } const [i, j] = [x + step[0], y + step[1]]; if ( V.OnBoard(i, j) && @@ -78,7 +89,7 @@ export class BalaklavaRules extends ChessRules { } getPotentialMammothMoves(sq) { - return this.getSlideNJumpMoves(sq, V.steps[V.MAMMOTH], "oneStep"); + return this.getSlideNJumpMoves(sq, V.steps[V.MAMMOTH], 1); } isAttacked(sq, color) { @@ -89,10 +100,8 @@ export class BalaklavaRules extends ChessRules { } isAttackedByMammoth(sq, color) { - return ( - this.isAttackedBySlideNJump( - sq, color, V.MAMMOTH, V.steps[V.MAMMOTH], "oneStep") - ); + return this.isAttackedBySlideNJump( + sq, color, V.MAMMOTH, V.steps[V.MAMMOTH], 1); } static get SEARCH_DEPTH() { @@ -106,4 +115,5 @@ export class BalaklavaRules extends ChessRules { ChessRules.VALUES ); } + };