Pandemonium 1 & 2, Stealthbomb 1 & 2
[vchess.git] / client / src / variants / Progressive2.js
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
8 static get PawnSpecs() {
9 return Object.assign(
10 {},
11 ChessRules.PawnSpecs,
12 { twoSquares: false }
13 );
14 }
15
16 static get HasFlags() {
17 return false;
18 }
19
20 static get HasEnpassant() {
21 return false;
22 }
23
24 postPlay(move) {
25 const c = move.turn[0];
26 const piece = move.vanish[0].p;
27 if (piece == V.KING && move.appear.length > 0) {
28 this.kingPos[c][0] = move.appear[0].x;
29 this.kingPos[c][1] = move.appear[0].y;
30 }
31 }
32
33 undo(move) {
34 V.UndoOnBoard(this.board, move);
35 if (this.turn != move.turn[0]) this.movesCount--;
36 this.turn = move.turn[0];
37 this.subTurn = move.turn[1];
38 super.postUndo(move);
39 }
40
41 static GenRandInitFen(randomness) {
42 return SuicideRules.GenRandInitFen(randomness);
43 }
44
45 static get VALUES() {
46 return {
47 p: 1,
48 r: 5,
49 n: 3,
50 b: 3,
51 q: 7, //slightly less than in orthodox game
52 k: 1000
53 };
54 }
55
56 };