+ pieceDef(piece, color, x, y) {
+ switch (piece) {
+ case 's': {
+ const forward = (color == 'w' ? -1 : 1);
+ return {
+ "class": "soldier",
+ both: [{
+ steps: [[0, 1], [0, -1], [forward, 0]],
+ range: 1
+ }]
+ };
+ }
+ case 't': return {
+ "class": "tower",
+ both: [{
+ steps: [[-1, 0], [1, 0], [0, -1], [0, 1]]
+ }],
+ moves: [{
+ steps: [[-1, -1], [-1, 1], [1, -1], [1, 1]]
+ }],
+ };
+ case 'c': return {
+ "class": "cardinal",
+ both: [{
+ steps: [[-1, -1], [-1, 1], [1, -1], [1, 1]]
+ }],
+ moves: [{
+ steps: [[-1, 0], [1, 0], [0, -1], [0, 1]]
+ }],
+ };
+ case 'e': return {
+ "class": "eagle",
+ moves: super.pieceDef('q').both,
+ attack: super.pieceDef('n').both
+ };
+ case 'd': return {
+ "class": "duke",
+ moves: super.pieceDef('q').both,
+ attack: super.pieceDef('k').both
+ };
+ }
+ return super.pieceDef(piece, color, x, y);