+ static get EGG_SURPRISE() {
+ return [
+ "kingboo", "bowser", "daisy", "koopa",
+ "luigi", "waluigi", "toadette", "chomp"];
+ }
+
+ canIplay(x, y) {
+ if (
+ this.playerColor != this.turn ||
+ Object.keys(V.IMMOBILIZE_DECODE).includes(this.getPiece(x, y))
+ ) {
+ return false;
+ }
+ return this.egg == "kingboo" || this.getColor(x, y) == this.turn;
+ }
+
+ pieces(color, x, y) {
+ const specials = {
+ 'i': {"class": "invisible"}, //queen
+ '?': {"class": "mystery"}, //...initial square
+ 'e': {"class": "egg"},
+ 'm': {"class": "mushroom"},
+ 'd': {"class": "banana"},
+ 'w': {"class": "bomb"},
+ 'z': {"class": "remote-capture"}
+ };
+ const bowsered = {
+ 's': {"class": ["immobilized", "pawn"]},
+ 'u': {"class": ["immobilized", "rook"]},
+ 'o': {"class": ["immobilized", "knight"]},
+ 'c': {"class": ["immobilized", "bishop"]},
+ 't': {"class": ["immobilized", "queen"]},
+ 'l': {"class": ["immobilized", "king"]}
+ };
+ return Object.assign(
+ {
+ 'y': {
+ // Virtual piece for "king remote shell captures"
+ moves: [],
+ attack: [
+ {
+ steps: [
+ [0, 1], [0, -1], [1, 0], [-1, 0],
+ [1, 1], [1, -1], [-1, 1], [-1, -1]
+ ]
+ }
+ ]
+ }
+ },
+ specials, bowsered, super.pieces(color, x, y)