X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=variants%2FBalaklava%2Fclass.js;h=2922b02c5fb7397e869f46abe08aab2cd21bec79;hb=0437a28b7e71bf8eb72fdab83b04ba98996393ec;hp=e16322f27e673e0c97a8448f190a1c1192b979c7;hpb=9aebe2aac02158a4f1c92ad0ac529f8ed245602e;p=xogo.git diff --git a/variants/Balaklava/class.js b/variants/Balaklava/class.js index e16322f..2922b02 100644 --- a/variants/Balaklava/class.js +++ b/variants/Balaklava/class.js @@ -27,7 +27,7 @@ export default class BalaklavaRules extends ChessRules { } ] }; - ['r', 'b', 'm', 'q'].forEach(p => res[p].moves = knightSpec.moves); + ['p', 'r', 'b', 'm', 'q'].forEach(p => res[p].moves = knightSpec.moves); return res; } @@ -44,12 +44,16 @@ export default class BalaklavaRules extends ChessRules { return []; const color = moves[0].vanish[0].c; const lastRank = (color == 'w' ? 0 : this.size.x - 1); + const forward = (color == 'w' ? -1 : 1); const noKnightPromotions = moves.filter(m => { return ( - m.end.x != lastRank || + (m.end.x - m.start.x) * forward > 0 && ( - Math.abs(m.start.x - m.end.x) <= 1 && - Math.abs(m.start.y - m.end.y) <= 1 + m.end.x != lastRank || + ( + Math.abs(m.start.x - m.end.x) <= 1 && + Math.abs(m.start.y - m.end.y) <= 1 + ) ) ); });