X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fvariants%2FMakruk.js;h=75fb1da23c5ce6bdc41ec41152583ebf485db40c;hb=f5cd0fb81ec9bd790d812c9ad02587e50427fcdf;hp=2da534f1e22dbc40c07396e37325e1f3027aecf2;hpb=cd49e617866590dbc68530ad961b109cdbe1ce55;p=vchess.git diff --git a/client/src/variants/Makruk.js b/client/src/variants/Makruk.js index 2da534f1..75fb1da2 100644 --- a/client/src/variants/Makruk.js +++ b/client/src/variants/Makruk.js @@ -3,6 +3,7 @@ import { ArrayFun } from "@/utils/array"; import { randInt, shuffle } from "@/utils/alea"; export class MakrukRules extends ChessRules { + static get HasFlags() { return false; } @@ -11,14 +12,19 @@ export class MakrukRules extends ChessRules { return false; } + static get Monochrome() { + return true; + } + + static get Notoodark() { + return true; + } + static get PawnSpecs() { return Object.assign( {}, ChessRules.PawnSpecs, - { - twoSquares: false, - promotions: [V.QUEEN] - } + { promotions: [V.QUEEN] } ); } @@ -103,8 +109,14 @@ export class MakrukRules extends ChessRules { ); } + isAttacked(sq, color) { + return ( + super.isAttacked(sq, color) || this.isAttackedByPromoted(sq, color) + ); + } + isAttackedByBishop(sq, color) { - const forward = (this.turn == 'w' ? 1 : -1); + const forward = (color == 'w' ? 1 : -1); return this.isAttackedBySlideNJump( sq, color, @@ -124,6 +136,16 @@ export class MakrukRules extends ChessRules { ); } + isAttackedByPromoted(sq, color) { + return super.isAttackedBySlideNJump( + sq, + color, + V.PROMOTED, + V.steps[V.BISHOP], + "oneStep" + ); + } + static get VALUES() { return { p: 1, @@ -135,4 +157,5 @@ export class MakrukRules extends ChessRules { k: 1000 }; } + };