const c = this.getColor(x, y);
if (x != (c == "w" ? V.size.x - 1 : 0) || y != this.INIT_COL_KING[c])
return []; //x isn't first rank, or king has moved (shortcut)
const c = this.getColor(x, y);
if (x != (c == "w" ? V.size.x - 1 : 0) || y != this.INIT_COL_KING[c])
return []; //x isn't first rank, or king has moved (shortcut)
- if (this.board[x][rookPos] == V.EMPTY || this.getColor(x, rookPos) != c)
+ if (
+ this.board[x][rookPos] == V.EMPTY ||
+ this.getColor(x, rookPos) != c ||
+ (!!castleWith && !castleWith.includes(this.getPiece(x, rookPos)))
+ ) {
// Nothing on the path of the king ? (and no checks)
const castlingPiece = this.getPiece(x, rookPos);
// Nothing on the path of the king ? (and no checks)
const castlingPiece = this.getPiece(x, rookPos);