const V = VariantRules;
const [sizeX,sizeY] = VariantRules.size;
const shift = (color == "w" ? -1 : 1);
- const startRanks = (color == "w" ? [sizeY-2,sizeY-3] : [1,2]);
- const lastRanks = (color == "w" ? [0,1,2] : [sizeY-1,sizeY-2,sizeY-3]);
+ const startRanks = (color == "w" ? [sizeX-2,sizeX-3] : [1,2]);
+ const lastRanks = (color == "w" ? [0,1,2] : [sizeX-1,sizeX-2,sizeX-3]);
if (x+shift >= 0 && x+shift < sizeX && x+shift != lastRanks[0])
{
{
// Two squares jump
moves.push(this.getBasicMove([x,y], [x+2*shift,y]));
- if (x == startRanks[0] && this.board[x+2*shift][y] == V.EMPTY)
+ if (x == startRanks[0] && this.board[x+3*shift][y] == V.EMPTY)
{
// 3-squares jump
moves.push(this.getBasicMove([x,y], [x+3*shift,y]));
if (lastRanks.includes(x+shift))
{
// Promotion
- let promotionPieces = [V.ROOK,V.KNIGHT,V.BISHOP,V.QUEEN];
+ let promotionPieces = [V.ROOK,V.KNIGHT,V.BISHOP,V.QUEEN,V.MARSHALL,V.CARDINAL];
promotionPieces.forEach(p => {
if (!this.captures[color][p] || this.captures[color][p]==0)
return;
return moves;
}
+ // TODO: different castle?
+
getPotentialMarshallMoves(sq)
{
const V = VariantRules;
|| this.isAttackedBySlideNJump(sq, colors, V.CARDINAL, V.steps[V.KNIGHT], "oneStep");
}
- play(move, ingame)
+ updateVariables(move)
{
- super.play(move, ingame);
+ super.updateVariables(move);
if (move.vanish.length==2 && move.appear.length==1
&& move.vanish[1].p != VariantRules.PAWN)
{
}
}
- undo(move)
+ unupdateVariables(move)
{
- super.undo(move);
+ super.unupdateVariables(move);
if (move.vanish.length==2 && move.appear.length==1
&& move.vanish[1].p != VariantRules.PAWN)
{
- // Capture: update this.captures
this.captures[move.vanish[1].c][move.vanish[1].p] =
Math.max(0, this.captures[move.vanish[1].c][move.vanish[1].p]-1);
}