{
const auto& keyValue = config.find(pieceInfo.second->name);
if (keyValue != config.end() && !keyValue->second.empty())
- v->add_piece(pieceInfo.first, keyValue->second.at(0));
+ {
+ if (isalpha(keyValue->second.at(0)))
+ v->add_piece(pieceInfo.first, keyValue->second.at(0));
+ else
+ v->remove_piece(pieceInfo.first);
+ }
}
parse_attribute("variantTemplate", v->variantTemplate);
parse_attribute("pieceToCharTable", v->pieceToCharTable);
size_t idx, idx2;
std::stringstream ss(it_prom_pt->second);
while ( ss >> token && (idx = v->pieceToChar.find(toupper(token))) != std::string::npos && ss >> token
- && ss >> token && (idx2 = v->pieceToChar.find(toupper(token))) != std::string::npos)
+ && ss >> token && (idx2 = (token == '-' ? 0 : v->pieceToChar.find(toupper(token)))) != std::string::npos)
v->promotedPieceType[idx] = PieceType(idx2);
}
parse_attribute("piecePromotionOnCapture", v->piecePromotionOnCapture);
const auto& it_ext = config.find("extinctionPieceTypes");
if (it_ext != config.end())
{
+ v->extinctionPieceTypes = {};
char token;
size_t idx;
std::stringstream ss(it_ext->second);
blackDropRegion = *6 *7 *8 *9 *10
# Hybrid variant of antichess and losalamos
-[anti-losalamos]
-pawn = p
-knight = n
-rook = r
-queen = q
+[anti-losalamos:losalamos]
+king = -
commoner = k
-maxRank = 6
-maxFile = 6
-startFen = rnqknr/pppppp/6/6/PPPPPP/RNQKNR w - - 0 1
-promotionRank = 6
promotionPieceTypes = nrqk
-doubleStep = false
-castling = false
mustCapture = true
stalemateValue = win
extinctionValue = win