X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fvariants%2FSpartan.js;h=20919eafeb8665b4384c120fadd55dcb5d0c5bb4;hb=4313762da3237b04f204e121a20cab3ba7bb5dd2;hp=3b4fc7714ba6ea828a041f4de2723203dbe6533a;hpb=26580d874deaea68cfb1b926549b1ee2720e9ec9;p=vchess.git diff --git a/client/src/variants/Spartan.js b/client/src/variants/Spartan.js index 3b4fc771..20919eaf 100644 --- a/client/src/variants/Spartan.js +++ b/client/src/variants/Spartan.js @@ -12,13 +12,12 @@ 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; } - static GenRandInitFen(randomness) { - if (randomness == 0) + static GenRandInitFen(options) { + if (options.randomness == 0) return "lgkcckwl/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w 0 ah"; // Mapping white --> black (first knight --> general; TODO): @@ -31,7 +30,7 @@ export class SpartanRules extends ChessRules { 'g': 'g' }; - const baseFen = ChessRules.GenRandInitFen(randomness).replace('n', 'g'); + const baseFen = ChessRules.GenRandInitFen(options).replace('n', 'g'); return ( baseFen.substr(0, 8).split('').map(p => piecesMap[p]).join('') + baseFen.substr(8) @@ -155,7 +154,7 @@ export class SpartanRules extends ChessRules { getPotentialSpartanKingMoves(sq) { // No castle: const steps = V.steps[V.ROOK].concat(V.steps[V.BISHOP]); - return super.getSlideNJumpMoves(sq, steps, "oneStep"); + return super.getSlideNJumpMoves(sq, steps, 1); } getPotentialHopliteMoves([x, y]) { @@ -213,26 +212,26 @@ export class SpartanRules extends ChessRules { const steps = V.steps[V.BISHOP].concat(V.steps['a']); Array.prototype.push.apply( moves, - super.getSlideNJumpMoves([x, y], steps, "oneStep") + super.getSlideNJumpMoves([x, y], steps, 1) ); return moves; } getPotentialCaptainMoves([x, y]) { const steps = V.steps[V.ROOK].concat(V.steps['d']); - return super.getSlideNJumpMoves([x, y], steps, "oneStep") + return super.getSlideNJumpMoves([x, y], steps, 1) } getPotentialGeneralMoves([x, y]) { return ( - super.getSlideNJumpMoves([x, y], V.steps[V.BISHOP], "oneStep") + super.getSlideNJumpMoves([x, y], V.steps[V.BISHOP], 1) .concat(super.getSlideNJumpMoves([x, y], V.steps[V.ROOK])) ); } getPotentialWarlordMoves([x, y]) { return ( - super.getSlideNJumpMoves([x, y], V.steps[V.KNIGHT], "oneStep") + super.getSlideNJumpMoves([x, y], V.steps[V.KNIGHT], 1) .concat(super.getSlideNJumpMoves([x, y], V.steps[V.BISHOP])) ); } @@ -250,34 +249,34 @@ export class SpartanRules extends ChessRules { } isAttackedByHoplite(sq) { - return super.isAttackedBySlideNJump(sq, 'b', V.PAWN, [[-1,0]], "oneStep"); + return super.isAttackedBySlideNJump(sq, 'b', V.PAWN, [[-1,0]], 1); } isAttackedByLieutenant(sq) { const steps = V.steps[V.BISHOP].concat(V.steps['a']); return ( - super.isAttackedBySlideNJump(sq, 'b', V.LIEUTENANT, steps, "oneStep") + super.isAttackedBySlideNJump(sq, 'b', V.LIEUTENANT, steps, 1) ); } isAttackedByCaptain(sq) { const steps = V.steps[V.ROOK].concat(V.steps['d']); - return super.isAttackedBySlideNJump(sq, 'b', V.CAPTAIN, steps, "oneStep"); + return super.isAttackedBySlideNJump(sq, 'b', V.CAPTAIN, steps, 1); } isAttackedByGeneral(sq) { return ( super.isAttackedBySlideNJump( - sq, 'b', V.GENERAL, V.steps[V.BISHOP], "oneStep") || + sq, 'b', V.GENERAL, V.steps[V.BISHOP], 1) || super.isAttackedBySlideNJump(sq, 'b', V.GENERAL, V.steps[V.ROOK]) ); } 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], 1) || + super.isAttackedBySlideNJump(sq, 'b', V.WARLORD, V.steps[V.BISHOP]) ); }