From: H.G.Muller Date: Wed, 27 Apr 2016 18:34:45 +0000 (+0200) Subject: Fix piece commands for promoted pieces X-Git-Url: http://winboard.nl/cgi-bin?p=xboard.git;a=commitdiff_plain;h=fd4699c26227714b63219850485e381be150f3dd Fix piece commands for promoted pieces The flexible partner assignment had broken the code for 'piece' commands defining the moves for these pieces, as the promotion partner was still calculated the old way. --- diff --git a/backend.c b/backend.c index 4f6262a..83034f4 100644 --- a/backend.c +++ b/backend.c @@ -9146,10 +9146,10 @@ FakeBookMove: // [HGM] book: we jump here to simulate machine moves after book h } if(sscanf(message, "piece %s %s", buf2, buf1) == 2) { ChessSquare piece = WhitePawn; - char *p=message+6, *q, *s = SUFFIXES, ID = *p; - if(*p == '+') piece = CHUPROMOTED(WhitePawn), ID = *++p; + char *p=message+6, *q, *s = SUFFIXES, ID = *p, promoted = 0; + if(*p == '+') promoted++, ID = *++p; if(q = strchr(s, p[1])) ID += 64*(q - s + 1), p++; - piece += CharToPiece(ID & 255) - WhitePawn; + piece = CharToPiece(ID & 255); if(promoted) piece = CHUPROMOTED(piece); if(cps != &first || appData.testLegality && *engineVariant == NULLCHAR /* always accept definition of */ && piece != WhiteFalcon && piece != BlackFalcon /* wild-card pieces. */ && piece != WhiteCobra && piece != BlackCobra