Add Progressive2 + fix knightrider translations
[vchess.git] / client / src / variants / Progressive2.js
CommitLineData
eaab401e
BA
1import { Progressive1Rules } from "@/variants/Progressive1";
2import { SuicideRules } from "@/variants/Suicide";
3import { ChessRules } from "@/base_rules";
4import { randInt } from "@/utils/alea";
5
6export 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};