X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fvariants%2FTitan.js;h=425e08d8c66b778183889ce44396c15c81d6c42d;hb=21704b041240cb440d03cfa64a90ed0be6f28415;hp=836acc1f6c5686bec187c9857866bad0e5871a74;hpb=e9437f4b2ee9a40013ee514562f39a36d551faab;p=vchess.git diff --git a/client/src/variants/Titan.js b/client/src/variants/Titan.js index 836acc1f..425e08d8 100644 --- a/client/src/variants/Titan.js +++ b/client/src/variants/Titan.js @@ -154,6 +154,8 @@ export class TitanRules extends ChessRules { const [x, y] = [square[0], square[1]]; if ((color == 'w' && x != 7) || (color == 'b' && x != 0)) return null; const selectedPiece = this.board[x][y][1]; + // Prevent re-augmenting a chosen piece: + if (!ChessRules.PIECES.includes(selectedPiece)) return null; return new Move({ appear: [ new PiPo({ @@ -228,11 +230,20 @@ export class TitanRules extends ChessRules { } postPlay(move) { - if (this.movesCount > 4) super.postPlay(move); + if (this.movesCount > 4) { + let piece = move.vanish[0].p; + if (['j', 'l'].includes(piece)) piece = V.KING; + if (piece == V.KING) + this.kingPos[move.appear[0].c] = [move.appear[0].x, move.appear[0].y]; + this.updateCastleFlags(move, piece); + } } postUndo(move) { - if (this.movesCount >= 4) super.postUndo(move); + if (this.movesCount >= 4) { + if (['j', 'k', 'l'].includes(this.getPiece(move.start.x, move.start.y))) + this.kingPos[move.vanish[0].c] = [move.start.x, move.start.y]; + } } evalPosition() {