import { ChessRules } from "@/base_rules";
export class BalaklavaRules extends ChessRules {
+
static get PawnSpecs() {
return Object.assign(
{},
);
}
- 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')
);
}
: 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) &&
}
getPotentialMammothMoves(sq) {
- return this.getSlideNJumpMoves(sq, V.steps[V.MAMMOTH], "oneStep");
+ return this.getSlideNJumpMoves(sq, V.steps[V.MAMMOTH], 1);
}
isAttacked(sq, color) {
}
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() {
ChessRules.VALUES
);
}
+
};