X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fvariants%2FBario.js;h=3e076658782222106b7b563ed00ab62bf0d6b018;hb=4313762da3237b04f204e121a20cab3ba7bb5dd2;hp=f344d3a2d58baea8765c1005c99586634f10ec01;hpb=c4244fcb06fd281722b57acd499c433150970e47;p=vchess.git diff --git a/client/src/variants/Bario.js b/client/src/variants/Bario.js index f344d3a2..3e076658 100644 --- a/client/src/variants/Bario.js +++ b/client/src/variants/Bario.js @@ -4,6 +4,10 @@ import { randInt } from "@/utils/alea"; export class BarioRules extends ChessRules { + static get Options() { + return null; + } + // Does not really seem necessary (although the author mention it) // Instead, first move = pick a square for the king. static get HasFlags() { @@ -73,7 +77,7 @@ export class BarioRules extends ChessRules { vanish: [ new PiPo({ x: square[0], y: square[1], c: c, p: V.UNDEFINED }) ], - start: { x: -1, y: -1 }, + start: { x: -1, y: -1 } }); } @@ -295,7 +299,13 @@ export class BarioRules extends ChessRules { if (this.movesCount <= 1) return moves; const color = this.turn; return moves.filter(m => { - if (m.vanish.length == 0) return true; + if (m.vanish.length == 0) { + // subTurn == 0: need to check if a move exists at subTurn == 1 + this.play(m); + const res = this.filterValid(this.getAllPotentialMoves()).length > 0; + this.undo(m); + return res; + } const start = { x: m.vanish[0].x, y: m.vanish[0].y }; const end = { x: m.appear[0].x, y: m.appear[0].y }; if (start.x == end.x && start.y == end.y) { @@ -330,9 +340,10 @@ export class BarioRules extends ChessRules { } return false; }; - if (this.subTurn == 0) return true; //always one reserve for an undefined - if (!super.atLeastOneMove()) return atLeastOneReserveMove(); - return true; + if (this.subTurn == 0) return atLeastOneReserveMove(); + const canMoveSomething = super.atLeastOneMove(); + if (this.subTurn == 2) return canMoveSomething; + return (canMoveSomething || atLeastOneReserveMove()); } underCheck(color) {