- const specs = this.pieces(color)[piece];
- const steps = specs.attack || specs.steps;
- outerLoop: for (let step of steps) {
- let [i, j] = [x + step[0], this.computeY(y + step[1])];
- let nbSteps = 1;
- while (this.onBoard(i, j) && this.board[i][j] == "") {
- if (specs.range <= nbSteps++) continue outerLoop;
- i += step[0];
- j = this.computeY(j + step[1]);
+ const specs = this.pieces(color, x, y)[piece];
+ const attacks = specs.attack || specs.moves;
+ for (let a of attacks) {
+ outerLoop: for (let step of a.steps) {
+ let [i, j] = [x + step[0], this.computeY(y + step[1])];
+ let nbSteps = 1;
+ while (this.onBoard(i, j) && this.board[i][j] == "") {
+ if (a.range <= nbSteps++)
+ continue outerLoop;
+ i += step[0];
+ j = this.computeY(j + step[1]);
+ }
+ if (
+ this.onBoard(i, j) && this.getColor(i, j) == oppCol &&
+ (!this.options["zen"] || this.getPieceType(i, j) == "k")
+ ) {
+ squares[C.CoordsToSquare({x: i, y: j})] = true;
+ }