From: H.G. Muller Date: Fri, 27 Dec 2013 19:06:21 +0000 (+0100) Subject: Fix promotion in Ai-Wok X-Git-Url: http://winboard.nl/cgi-bin?a=commitdiff_plain;h=0d028927885f24bda4d1c64f9cac2cda17703e19;p=xboard.git Fix promotion in Ai-Wok When in a variant with fixed promotion, such as Makruk, the promotion piece did not participate, this led to disappearence of the piece, and an =. suffix in SAN. This is relevant for the Makruk variant Ai-Wok, which replaces the Met by a much more powerful Ai-Wok, which could not be represented by another XBoard piece type due to this problem. Now we search through the pieceToCharTable until a valid piece is found, which works when the Ai-Wok is represented by a SMIRF Archbishop symbol. --- diff --git a/backend.c b/backend.c index 8f796e7..b7c3246 100644 --- a/backend.c +++ b/backend.c @@ -6553,7 +6553,11 @@ HasPromotionChoice (int fromX, int fromY, int toX, int toY, char *promoChoice, i // we either have a choice what to promote to, or (in Shogi) whether to promote if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier || gameInfo.variant == VariantMakruk || gameInfo.variant == VariantASEAN) { - *promoChoice = PieceToChar(BlackFerz); // no choice + ChessSquare p=BlackFerz; // no choice + while(p < EmptySquare) { //but make sure we use piece that exists + *promoChoice = PieceToChar(p++); + if(*promoChoice != '.') break; + } return FALSE; } // no sense asking what we must promote to if it is going to explode...