return Object.assign(
{},
ChessRules.PawnSpecs,
- { promotions: ChessRules.PawnSpecs.promotions.concat([V.CHAMPION]) }
+ { promotions: ChessRules.PawnSpecs.promotions.concat([V.PHOENIX]) }
);
}
static get HasFlags() {
return false;
}
- static get HasCastle() {
- return false;
- }
- static get CHAMPION() {
- return 'c';
+ static get PHOENIX() {
+ return 'h';
}
static get BALL() {
'b': 'd',
'q': 't',
'k': 'l',
- 'c': 'h'
+ 'h': 'i'
};
}
'd': 'b',
't': 'q',
'l': 'k',
- 'h': 'c'
+ 'i': 'h'
};
}
static get PIECES() {
return ChessRules.PIECES
- .concat([V.CHAMPION])
+ .concat([V.PHOENIX])
.concat(Object.keys(V.HAS_BALL_DECODE))
.concat(['a']);
}
let prefix = "";
const withPrefix =
Object.keys(V.HAS_BALL_DECODE)
- .concat([V.CHAMPION])
+ .concat([V.PHOENIX])
.concat(['a']);
if (withPrefix.includes(b[1])) prefix = "Ball/";
return prefix + b;
return Object.assign(
{},
ChessRules.steps,
- // Add champion moves
+ // Add phoenix moves
{
- c: [
+ h: [
[-2, -2],
- [-2, 0],
[-2, 2],
- [0, -2],
- [0, 2],
[2, -2],
- [2, 0],
[2, 2],
[-1, 0],
[1, 0],
// So base implementation is fine.
getPotentialMovesFrom([x, y]) {
- if (this.getPiece(x, y) == V.CHAMPION)
- return this.getPotentialChampionMoves([x, y]);
+ if (this.getPiece(x, y) == V.PHOENIX)
+ return this.getPotentialPhoenixMoves([x, y]);
return super.getPotentialMovesFrom([x, y]);
}
return moves;
}
- getPotentialChampionMoves(sq) {
- return this.getSlideNJumpMoves(sq, V.steps[V.CHAMPION], "oneStep");
+ getPotentialPhoenixMoves(sq) {
+ return this.getSlideNJumpMoves(sq, V.steps[V.PHOENIX], "oneStep");
}
filterValid(moves) {
return {
p: 1,
r: 3,
- n: 4,
+ n: 3,
b: 2,
q: 5,
- c: 4,
+ h: 3,
a: 0 //ball: neutral
};
}