Some fixes, draw lines on board, add 7 variants
[vchess.git] / client / src / variants / Rococo.js
index 8489ae9..e0838e1 100644 (file)
@@ -15,6 +15,15 @@ export class RococoRules extends ChessRules {
     return ChessRules.PIECES.concat([V.IMMOBILIZER]);
   }
 
+  static get Lines() {
+    return [
+      [[1, 1], [1, 9]],
+      [[1, 9], [9, 9]],
+      [[9, 9], [9, 1]],
+      [[9, 1], [1, 1]]
+    ];
+  }
+
   getPpath(b) {
     if (b[1] == "m")
       //'m' for Immobilizer (I is too similar to 1)
@@ -131,8 +140,9 @@ export class RococoRules extends ChessRules {
   getPotentialMovesFrom([x, y]) {
     // Pre-check: is thing on this square immobilized?
     const imSq = this.isImmobilized([x, y]);
-    if (!!imSq) {
-      // Only option is suicide:
+    const piece = this.getPiece(x, y);
+    if (!!imSq && piece != V.KING) {
+      // Only option is suicide, if I'm not a king:
       return [
         new Move({
           start: { x: x, y: y },
@@ -150,7 +160,7 @@ export class RococoRules extends ChessRules {
       ];
     }
     let moves = [];
-    switch (this.getPiece(x, y)) {
+    switch (piece) {
       case V.IMMOBILIZER:
         moves = this.getPotentialImmobilizerMoves([x, y]);
         break;
@@ -623,7 +633,7 @@ export class RococoRules extends ChessRules {
   static GenRandInitFen(randomness) {
     if (randomness == 0) {
       return (
-        "91/1rnbkqbnm1/1pppppppp1/91/91/91/91/1PPPPPPPP1/1MNBQKBNR1/91 w 0 -"
+        "91/1rqnbknqm1/1pppppppp1/91/91/91/91/1PPPPPPPP1/1MQNBKNQR1/91 w 0 -"
       );
     }