changes from H.G. Muller; version 4.3.16
[xboard.git] / parser.l
old mode 100644 (file)
new mode 100755 (executable)
index 41feced..48e78f3
--- a/parser.l
+++ b/parser.l
@@ -304,6 +304,8 @@ extern void CopyBoard P((Board to, Board from));
          result == WhitePromotionQueen  || result == BlackPromotionQueen)) {\r
         if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier)\r
             currentMoveString[4] = PieceToChar(BlackFerz);\r
+        else if(gameInfo.variant == VariantGreat)\r
+            currentMoveString[4] = PieceToChar(BlackMan);\r
         else\r
             currentMoveString[4] = PieceToChar(BlackQueen);\r
        currentMoveString[5] = NULLCHAR;\r
@@ -448,7 +450,6 @@ extern void CopyBoard P((Board to, Board from));
 \r
     if (gameInfo.variant == VariantXiangqi && /* [HGM] In Xiangqi rank stays same */\r
          currentMoveString[0] != currentMoveString[2] ) {\r
-        if (yytext[2+skip] == ONE) return (int) ImpossibleMove;\r
         currentMoveString[1] = yytext[2+skip];\r
     } else \r
     if (WhiteOnMove(yyboardindex)) {\r
@@ -483,6 +484,11 @@ extern void CopyBoard P((Board to, Board from));
         (result == WhitePromotionQueen  || result == BlackPromotionQueen ||\r
          result == WhitePromotionKnight || result == BlackPromotionKnight)) {\r
         currentMoveString[4] = PieceToChar(BlackQueen);\r
+       // [HGM] shatranj: take care of variants without Queen\r
+       if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier)\r
+            currentMoveString[4] = PieceToChar(BlackFerz);\r
+       if(gameInfo.variant == VariantGreat)\r
+            currentMoveString[4] = PieceToChar(BlackMan);\r
        currentMoveString[5] = NULLCHAR;\r
     }\r
 \r