X-Git-Url: https://git.auder.net/images/diag_mark.svg?a=blobdiff_plain;f=client%2Fsrc%2Fvariants%2FSpartan.js;h=2400e0408e5f85703ed7c78bdb0ea6eb048577e5;hb=d807470f965d4d60a7fe6e1320ac7dfd3f0ea03f;hp=5b0ccecb8a53c0686cdd1553b0b2a4511086212c;hpb=b90120e062404b8c656d4f38e66727df8a7e1c5a;p=vchess.git diff --git a/client/src/variants/Spartan.js b/client/src/variants/Spartan.js index 5b0ccecb..2400e040 100644 --- a/client/src/variants/Spartan.js +++ b/client/src/variants/Spartan.js @@ -12,8 +12,7 @@ export class SpartanRules extends ChessRules { } getPpath(b) { - if ([V.LIEUTENANT, V.GENERAL, V.CAPTAIN, V.WARLORD].includes(b[1])) - return "Spartan/" + b; + if (b[0] == 'b' && b[1] != 'k') return "Spartan/" + b; return b; } @@ -275,9 +274,9 @@ export class SpartanRules extends ChessRules { isAttackedByWarlord(sq) { return ( - super.isAttackedBySlideNJump(sq, 'b', V.GENERAL, - V.steps[V.ROOK].concat(V.steps[V.BISHOP]), "oneStep") || - super.isAttackedBySlideNJump(sq, 'b', V.GENERAL, V.steps[V.ROOK]) + super.isAttackedBySlideNJump( + sq, 'b', V.WARLORD, V.steps[V.KNIGHT], "oneStep") || + super.isAttackedBySlideNJump(sq, 'b', V.WARLORD, V.steps[V.BISHOP]) ); } @@ -398,4 +397,26 @@ export class SpartanRules extends ChessRules { return 2; } + getNotation(move) { + const piece = this.getPiece(move.start.x, move.start.y); + if (piece == V.PAWN) { + // Pawn move + const finalSquare = V.CoordsToSquare(move.end); + let notation = ""; + if (move.vanish.length == 2) + // Capture + notation = "Px" + finalSquare; + else { + // No capture: indicate the initial square for potential ambiguity + const startSquare = V.CoordsToSquare(move.start); + notation = startSquare + finalSquare; + } + if (move.appear[0].p != V.PAWN) + // Promotion + notation += "=" + move.appear[0].p.toUpperCase(); + return notation; + } + return super.getNotation(move); //OK for all other pieces + } + };