Commit | Line | Data |
---|---|---|
eaab401e BA |
1 | import { Progressive1Rules } from "@/variants/Progressive1"; |
2 | import { SuicideRules } from "@/variants/Suicide"; | |
3 | import { ChessRules } from "@/base_rules"; | |
4 | import { randInt } from "@/utils/alea"; | |
5 | ||
6 | export class Progressive2Rules extends Progressive1Rules { | |
7 | static get PawnSpecs() { | |
8 | return Object.assign( | |
9 | {}, | |
10 | ChessRules.PawnSpecs, | |
11 | { twoSquares: false } | |
12 | ); | |
13 | } | |
14 | ||
15 | static get HasFlags() { | |
16 | return false; | |
17 | } | |
18 | ||
19 | postPlay(move) { | |
20 | const c = move.turn[0]; | |
21 | const piece = move.vanish[0].p; | |
22 | if (piece == V.KING && move.appear.length > 0) { | |
23 | this.kingPos[c][0] = move.appear[0].x; | |
24 | this.kingPos[c][1] = move.appear[0].y; | |
25 | } | |
26 | } | |
27 | ||
28 | undo(move) { | |
29 | this.disaggregateFlags(JSON.parse(move.flags)); | |
30 | V.UndoOnBoard(this.board, move); | |
31 | if (this.turn != move.turn[0]) this.movesCount--; | |
32 | this.turn = move.turn[0]; | |
33 | this.subTurn = move.turn[1]; | |
34 | super.postUndo(move); | |
35 | } | |
36 | ||
37 | static GenRandInitFen(randomness) { | |
38 | return SuicideRules.GenRandInitFen(randomness); | |
39 | } | |
40 | ||
41 | static get VALUES() { | |
42 | return { | |
43 | p: 1, | |
44 | r: 5, | |
45 | n: 3, | |
46 | b: 3, | |
47 | q: 7, //slightly less than in orthodox game | |
48 | k: 1000 | |
49 | }; | |
50 | } | |
51 | }; |