projects
/
vchess.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[Otage] fix black pawn promoting with white pawn in hostage
[vchess.git]
/
client
/
src
/
variants
/
Otage.js
diff --git
a/client/src/variants/Otage.js
b/client/src/variants/Otage.js
index
6c2b1ec
..
9eb900a
100644
(file)
--- a/
client/src/variants/Otage.js
+++ b/
client/src/variants/Otage.js
@@
-255,7
+255,14
@@
export class OtageRules extends ChessRules {
// Transformation computed without taking union into account
const up = this.getUnionPieces(initColor, initPiece);
let args = [tr.p, up[oppCol]];
// Transformation computed without taking union into account
const up = this.getUnionPieces(initColor, initPiece);
let args = [tr.p, up[oppCol]];
- if (['a', 'v'].includes(initColor)) args = args.reverse();
+ if (
+ ['a', 'v'].includes(initColor) ||
+ // HACK: "ba" piece = two pawns, black controling.
+ // If promoting, must artificially imagine color was 'a':
+ (initPiece == 'a' && initColor == 'b')
+ ) {
+ args = args.reverse();
+ }
const capturer = (['a', 'b'].includes(initColor) ? 'b' : 'w');
const cp = this.getUnionCode(args[0], args[1], capturer);
tr.c = cp.c;
const capturer = (['a', 'b'].includes(initColor) ? 'b' : 'w');
const cp = this.getUnionCode(args[0], args[1], capturer);
tr.c = cp.c;