projects
/
vchess.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Experimental loss on repetition for Shogi and Pandemonium. Simplify Crazyhouse, with...
[vchess.git]
/
client
/
src
/
variants
/
Otage.js
diff --git
a/client/src/variants/Otage.js
b/client/src/variants/Otage.js
index
9eb900a
..
7915715
100644
(file)
--- a/
client/src/variants/Otage.js
+++ b/
client/src/variants/Otage.js
@@
-36,7
+36,7
@@
export class OtageRules extends ChessRules {
x: ['b', 'k'],
y: ['q', 'q'],
z: ['q', 'k'],
x: ['b', 'k'],
y: ['q', 'q'],
z: ['q', 'k'],
- '
_
': ['k', 'k']
+ '
@
': ['k', 'k']
};
}
};
}
@@
-61,7
+61,7
@@
export class OtageRules extends ChessRules {
for (let i = 0; i < row.length; i++) {
const lowR = row[i].toLowerCase();
const readNext = !(ChessRules.PIECES.includes(lowR));
for (let i = 0; i < row.length; i++) {
const lowR = row[i].toLowerCase();
const readNext = !(ChessRules.PIECES.includes(lowR));
- if (!!(lowR.match(/[a-z
_
]/))) {
+ if (!!(lowR.match(/[a-z
@
]/))) {
sumElts++;
if (lowR == 'k') kings[row[i]]++;
else if (readNext) {
sumElts++;
if (lowR == 'k') kings[row[i]]++;
else if (readNext) {
@@
-146,7
+146,7
@@
export class OtageRules extends ChessRules {
const c = fenRows[i].charAt(j);
const lowR = c.toLowerCase();
const readNext = !(ChessRules.PIECES.includes(lowR));
const c = fenRows[i].charAt(j);
const lowR = c.toLowerCase();
const readNext = !(ChessRules.PIECES.includes(lowR));
- if (!!(lowR.match(/[a-z
_
]/))) {
+ if (!!(lowR.match(/[a-z
@
]/))) {
if (lowR == 'k') this.kingPos[c == 'k' ? 'b' : 'w'] = [i, k];
else if (readNext) {
const up = this.getUnionPieces(fenRows[i][++j], lowR);
if (lowR == 'k') this.kingPos[c == 'k' ? 'b' : 'w'] = [i, k];
else if (readNext) {
const up = this.getUnionPieces(fenRows[i][++j], lowR);
@@
-355,7
+355,7
@@
export class OtageRules extends ChessRules {
}
let baseMoves = [];
const c = this.turn;
}
let baseMoves = [];
const c = this.turn;
- switch (piece
|| this.getPiece(x, y)
) {
+ switch (piece) {
case V.PAWN: {
const firstRank = (c == 'w' ? 7 : 0);
baseMoves = this.getPotentialPawnMoves([x, y]).filter(m => {
case V.PAWN: {
const firstRank = (c == 'w' ? 7 : 0);
baseMoves = this.getPotentialPawnMoves([x, y]).filter(m => {
@@
-704,8
+704,8
@@
export class OtageRules extends ChessRules {
const lm = this.lastMoveEnd[L-1];
const piece =
!!lm
const lm = this.lastMoveEnd[L-1];
const piece =
!!lm
- ? lm.p
:
- this.getPiece(move.vanish[0].x, move.vanish[0].y);
+ ? lm.p
+
:
this.getPiece(move.vanish[0].x, move.vanish[0].y);
if (piece == V.KING)
this.kingPos[c] = [move.appear[0].x, move.appear[0].y];
this.updateCastleFlags(move, piece);
if (piece == V.KING)
this.kingPos[c] = [move.appear[0].x, move.appear[0].y];
this.updateCastleFlags(move, piece);
@@
-762,6
+762,13
@@
export class OtageRules extends ChessRules {
postUndo(move) {
if (this.getPiece(move.start.x, move.start.y) == V.KING)
this.kingPos[this.turn] = [move.start.x, move.start.y];
postUndo(move) {
if (this.getPiece(move.start.x, move.start.y) == V.KING)
this.kingPos[this.turn] = [move.start.x, move.start.y];
+ else {
+ // Check if a king is being released: put it on releasing square
+ const L = this.lastMoveEnd.length;
+ const lm = this.lastMoveEnd[L-1];
+ if (!!lm && lm.p == V.KING)
+ this.kingPos[this.turn] = [move.start.x, move.start.y];
+ }
}
getCurrentScore() {
}
getCurrentScore() {