+ else if (move.vanish.length == 1)
+ {
+ if (this.promoted[move.start.x][move.start.y])
+ {
+ this.promoted[move.start.x][move.start.y] = false;
+ this.promoted[move.end.x][move.end.y] = true;
+ }
+ else if (move.vanish[0].p == V.PAWN && move.appear[0].p != V.PAWN)
+ this.promoted[move.end.x][move.end.y] = true;
+ }
+ else //capture
+ {
+ if (this.promoted[move.end.x][move.end.y])
+ {
+ move.capturePromoted = true; //required for undo
+ this.reserve[color][VariantRules.PAWN]++;
+ this.promoted[move.end.x][move.end.y] = false;
+ }
+ else
+ this.reserve[color][move.vanish[1].p]++;
+ if (this.promoted[move.start.x][move.start.y])
+ {
+ this.promoted[move.start.x][move.start.y] = false;
+ this.promoted[move.end.x][move.end.y] = true;
+ }
+ else if (move.vanish[0].p == V.PAWN && move.appear[0].p != V.PAWN)
+ this.promoted[move.end.x][move.end.y] = true;
+ }