if (newMove_s.length == 1)
moves.push(newMove_s[0]);
else //promotion
- moves = moves.concat(moves, newMove_s);
+ moves = moves.concat(newMove_s);
});
return moves;
}
// Complete a move with magnetic actions
+ // TODO: job is done multiple times for (normal) promotions.
applyMagneticLaws(move)
{
const V = VariantRules;
if (this.getColor(i,j) != color)
{
// Attraction
- if ((Math.abs(i-x)>=2 || Math.abs(j-y)>=2)
- && this.getPiece(i,j) != V.KING)
+ if ((Math.abs(i-x)>=2 || Math.abs(j-y)>=2) && this.getPiece(i,j) != V.KING)
{
move.vanish.push(
new PiPo({
// Scan move for pawn (max 1) on 8th rank
for (let i=1; i<move.appear.length; i++)
{
- if (move.appear[i].p==V.PAWN && move.appear[i].x==lastRank)
+ if (move.appear[i].p==V.PAWN && move.appear[i].c==color && move.appear[i].x==lastRank)
{
move.appear[i].p = V.ROOK;
moves.push(move);