import { randInt } from "@/utils/alea";
export class ApocalypseRules extends ChessRules {
+
static get PawnSpecs() {
return Object.assign(
{},
);
}
+ static get SomeHiddenMoves() {
+ return true;
+ }
+
static get HasCastle() {
return false;
}
if (['P','p'].includes(row[i])) pawns[row[i]]++;
if (V.PIECES.includes(row[i].toLowerCase())) sumElts++;
else {
- const num = parseInt(row[i]);
+ const num = parseInt(row[i], 10);
if (isNaN(num)) return false;
sumElts += num;
}
setFlags(fenflags) {
this.penaltyFlags = {
- 'w': parseInt(fenflags[0]),
- 'b': parseInt(fenflags[1])
+ 'w': parseInt(fenflags[0], 10),
+ 'b': parseInt(fenflags[1], 10)
};
}
start: this.whiteMove.start,
end: this.whiteMove.end,
appear: this.whiteMove.appear,
- vanish: this.whiteMove.vanish,
- illegal: this.whiteMove.illegal
+ vanish: this.whiteMove.vanish
});
}
const mHash = "m" + vm.start.x + vm.start.y + vm.end.x + vm.end.y;
if (!moveSet[mHash]) {
moveSet[mHash] = true;
- vm.illegal = true; //potentially illegal!
+ vm.end.illegal = true; //potentially illegal!
speculations.push(vm);
}
});
m.vanish[1].c != m.vanish[0].c ||
// Self-capture attempt
(
- !other.illegal &&
+ !other.end.illegal &&
other.end.x == m.end.x &&
other.end.y == m.end.y
)
||
(
m.vanish[0].p == V.PAWN &&
- !other.illegal &&
+ !other.end.illegal &&
(
(
// Promotion attempt
)
);
};
- if (!!m1.illegal && !isPossible(m1, m2)) {
+ if (!!m1.end.illegal && !isPossible(m1, m2)) {
// Either an anticipated capture of something which didn't move
// (or not to the right square), or a push through blocus.
// ==> Just discard the move, and add a penalty point
this.penaltyFlags[m1.vanish[0].c]++;
m1.isNull = true;
}
- if (!!m2.illegal && !isPossible(m2, m1)) {
+ if (!!m2.end.illegal && !isPossible(m2, m1)) {
this.penaltyFlags[m2.vanish[0].c]++;
m2.isNull = true;
}
let remain = null;
const p1 = m1.vanish[0].p;
const p2 = m2.vanish[0].p;
- if (!!m1.illegal && !m2.illegal) remain = { c: 'w', p: p1 };
- else if (!!m2.illegal && !m1.illegal) remain = { c: 'b', p: p2 };
+ if (!!m1.end.illegal && !m2.end.illegal) remain = { c: 'w', p: p1 };
+ else if (!!m2.end.illegal && !m1.end.illegal) remain = { c: 'b', p: p2 };
if (!remain) {
// Either both are illegal or both are legal
if (p1 == V.KNIGHT && p2 == V.PAWN) remain = { c: 'w', p: p1 };
else this.whiteMove = move.whiteMove;
}
- getCheckSquares(color) {
+ getCheckSquares() {
return [];
}
let illegalMoves = [];
moves.forEach(m => {
// Warning: m might be illegal!
- if (!m.illegal) {
+ if (!m.end.illegal) {
V.PlayOnBoard(this.board, m);
m.eval = this.evalPosition();
V.UndoOnBoard(this.board, m);
V.CoordsToSquare(move.end)
);
}
+
};