lpiece = KNIGHT;
else if (c == 'p')
lpiece = PAWN;
+ else if (c == 'd')
+ lpiece = DRAGONKING;
else
goto nomatch;
break;
if (s == NULL) {
return;
}
-
+
if (piecetype(gs->board[mt->fromFile][mt->fromRank]) != PAWN) {
return;
}
break;
case HORSE:
if(strstr(gs->variant, "great")) piece = PRIESTESS;
+ if(strstr(gs->variant, "shogi")) piece = DRAGONHORSE;
break;
case GOLD:
if(strstr(gs->variant, "great")) piece = MASTODON;
strcpy(mStr, "N");
break;
case DRAGONKING:
- strcpy(mStr, "J");
+ strcpy(mStr, "D");
break;
case DRAGONHORSE:
- strcpy(mStr, "I");
+ strcpy(mStr, "H");
break;
case LANCE:
strcpy(mStr, "L");
}\r
sprintf(tmp, "%c%d", mt->toFile + 'a', mt->toRank + 1 - (gs->ranks > 9));\r
strcat(mStr, tmp);\r
-\r
- if ((piece == PAWN) && (mt->piecePromotionTo != NOPIECE)) {\r
+
+ if ((piece == PAWN || gs->promoType == 3) && (mt->piecePromotionTo != NOPIECE)) {\r
strcat(mStr, "="); /* = before promoting piece */\r
switch (piecetype(mt->piecePromotionTo)) {\r
case KNIGHT:\r
case MASTODON:\r
strcat(mStr, "G");\r
break;\r
+ case GOLD: // [HGM] Shogi promotions: avoid use of '+'\r
+ strcat(mStr, "G");\r
+ break;\r
+ case DRAGONHORSE:\r
+ strcat(mStr, "H");\r
+ break;\r
+ case DRAGONKING:\r
+ strcat(mStr, "D");\r
+ break;\r
default:\r
break;\r
}\r