X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fvariants%2FOtage.js;h=caf55c9ccecb6888137594672a0dec52c19dc641;hb=HEAD;hp=2a8891ff6e8c0fa39dac74fbbcc5b00c544cdc8f;hpb=d982fffc441a0443be90ba6f57a94d1d60b702c8;p=vchess.git diff --git a/client/src/variants/Otage.js b/client/src/variants/Otage.js index 2a8891ff..caf55c9c 100644 --- a/client/src/variants/Otage.js +++ b/client/src/variants/Otage.js @@ -197,9 +197,9 @@ export class OtageRules extends ChessRules { this.pawnFlags = flags[1]; } - static GenRandInitFen(randomness) { + static GenRandInitFen(options) { // Add 16 pawns flags: - return ChessRules.GenRandInitFen(randomness) + return ChessRules.GenRandInitFen(options) .slice(0, -2) + "1111111111111111 -"; } @@ -355,7 +355,7 @@ export class OtageRules extends ChessRules { } let baseMoves = []; const c = this.turn; - switch (piece || this.getPiece(x, y)) { + switch (piece) { case V.PAWN: { const firstRank = (c == 'w' ? 7 : 0); baseMoves = this.getPotentialPawnMoves([x, y]).filter(m => { @@ -390,10 +390,7 @@ export class OtageRules extends ChessRules { break; case V.KING: baseMoves = this.getSlideNJumpMoves( - [x, y], - V.steps[V.ROOK].concat(V.steps[V.BISHOP]), - "oneStep" - ); + [x, y], V.steps[V.ROOK].concat(V.steps[V.BISHOP]), 1); if (!noCastle && this.castleFlags[this.turn].some(v => v < V.size.y)) baseMoves = baseMoves.concat(this.getCastleMoves([x, y])); break; @@ -704,8 +701,8 @@ export class OtageRules extends ChessRules { const lm = this.lastMoveEnd[L-1]; const piece = !!lm - ? lm.p : - this.getPiece(move.vanish[0].x, move.vanish[0].y); + ? lm.p + : this.getPiece(move.vanish[0].x, move.vanish[0].y); if (piece == V.KING) this.kingPos[c] = [move.appear[0].x, move.appear[0].y]; this.updateCastleFlags(move, piece); @@ -762,6 +759,13 @@ export class OtageRules extends ChessRules { postUndo(move) { if (this.getPiece(move.start.x, move.start.y) == V.KING) this.kingPos[this.turn] = [move.start.x, move.start.y]; + else { + // Check if a king is being released: put it on releasing square + const L = this.lastMoveEnd.length; + const lm = this.lastMoveEnd[L-1]; + if (!!lm && lm.p == V.KING) + this.kingPos[this.turn] = [move.start.x, move.start.y]; + } } getCurrentScore() {