X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fbase_rules.js;h=e142839997a1572b5ec441126cb3d71ef0ab8989;hb=57d9b2c4f08948bd5a5fc4a01a0b62d4c80523e2;hp=f51e8d01ef9815b9400c665dbd923506bb7e40b3;hpb=8c1ec21009634290a177ed5a0f093d900a698454;p=vchess.git diff --git a/client/src/base_rules.js b/client/src/base_rules.js index f51e8d01..e1428399 100644 --- a/client/src/base_rules.js +++ b/client/src/base_rules.js @@ -191,9 +191,9 @@ export const ChessRules = class ChessRules { return V.CoordToColumn(coords.y) + (V.size.x - coords.x); } - // Path to pieces + // Path to pieces (standard ones in pieces/ folder) getPpath(b) { - return b; //usual pieces in pieces/ folder + return b; } // Path to promotion pieces (usually the same) @@ -226,7 +226,7 @@ export const ChessRules = class ChessRules { if ( Math.abs(s.x - e.x) == 2 && s.y == e.y && - move.appear[0].p == V.PAWN + (move.appear.length > 0 && move.appear[0].p == V.PAWN) ) { return { x: (s.x + e.x) / 2, @@ -1101,7 +1101,9 @@ export const ChessRules = class ChessRules { ) { const flagIdx = (move.start.y == this.castleFlags[c][0] ? 0 : 1); this.castleFlags[c][flagIdx] = V.size.y; - } else if ( + } + // NOTE: not "else if" because a rook could take an opposing rook + if ( move.end.x == oppFirstRank && //we took opponent rook? this.castleFlags[oppCol].includes(move.end.y) ) { @@ -1282,8 +1284,8 @@ export const ChessRules = class ChessRules { } let candidates = [0]; - for (let j = 1; j < moves1.length && moves1[j].eval == moves1[0].eval; j++) - candidates.push(j); + for (let i = 1; i < moves1.length && moves1[i].eval == moves1[0].eval; i++) + candidates.push(i); return moves1[candidates[randInt(candidates.length)]]; }