import ChessRules from "/base_rules.js";
+import {FenUtil} from "/utils/setupPieces.js";
export default class BalaklavaRules extends ChessRules {
pieces(color, x, y) {
let res = super.pieces(color, x, y);
- const knightSpec = res['n'];
+ const knightSpecMoves = res['n'].both;
delete res['n'];
res['m'] = {
"class": "mammoth",
}
]
};
- ['r', 'b', 'm', 'q'].forEach(p => res[p].moves = knightSpec.moves);
+ ['p', 'r', 'b', 'm', 'q'].forEach(p => {
+ if (!res[p].moves)
+ res[p].moves = [];
+ Array.prototype.push.apply(res[p].moves, knightSpecMoves);
+ });
return res;
}
genRandInitBaseFen() {
- const baseFen = super.genRandInitBaseFen();
+ const s = FenUtil.setupPieces(
+ ['r', 'm', 'b', 'q', 'k', 'b', 'm', 'r'],
+ {
+ randomness: this.options["randomness"],
+ diffCol: ['b']
+ }
+ );
return {
- fen: baseFen.replace(/n/g, 'm').replace(/N/g, 'M'),
- o: baseFen.o
+ fen: s.b.join("") + "/pppppppp/8/8/8/8/PPPPPPPP/" +
+ s.w.join("").toUpperCase(),
+ o: {flags: s.flags}
};
}
return [];
const color = moves[0].vanish[0].c;
const lastRank = (color == 'w' ? 0 : this.size.x - 1);
+ const forward = (color == 'w' ? -1 : 1);
const noKnightPromotions = moves.filter(m => {
return (
- m.end.x != lastRank ||
+ (m.end.x - m.start.x) * forward > 0 &&
(
- Math.abs(m.start.x - m.end.x) <= 1 &&
- Math.abs(m.start.y - m.end.y) <= 1
+ m.end.x != lastRank ||
+ (
+ Math.abs(m.start.x - m.end.x) <= 1 &&
+ Math.abs(m.start.y - m.end.y) <= 1
+ )
)
);
});