Skip to content

Commit

Permalink
Update variant.cpp
Browse files Browse the repository at this point in the history
Added Musketeer Chess Variant description. The Gating is like Seirawan Chess but the squares for Gating are Selected before the game starts. The default piece combination is Leopard and Musketeer Cannon. This piece combination can be changed in variants.ini 
When Pychess will be deployed, a trick should be found to allow piece selection from a bunch of possible choices.
  • Loading branch information
musketeerchess authored Dec 19, 2023
1 parent 9c70265 commit c28a066
Showing 1 changed file with 31 additions and 0 deletions.
31 changes: 31 additions & 0 deletions src/variant.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -718,6 +718,36 @@ namespace {
v->promotionPieceTypes[BLACK] = piece_set(ARCHBISHOP) | CHANCELLOR | QUEEN | ROOK | BISHOP | KNIGHT;
return v;
}
// Musketeer Chess
// https://musketeerchess.net
// A Seirawan-inspired variant with unique gating mechanics.
// Pieces are introduced to predefined squares, chosen before game start, this is named Gating Selection = Where the chosen piece is going to be gated
// Gating of the additional pieces is activated when first-rank pieces move for the first time. Only the additional piece waiting to be gated on that specific square can be introduced.
// Features a variety of new pieces, thus there is a piece selection step where both players must agree to chose the additional piece combination.
// In Fairy Stockfish the Piece Selection is determined at the PieceToCharTable, this default combination can be changed in variant.ini
Variant* musketeer_variant() {
Variant* v = chess_variant();
v->variantTemplate = "seirawan";
v->pieceToCharTable = "PNBRQ.C..........LO..Kpnbrq.c..........lo..k"; // The default piece combo in Musketeer Chess is Leopard L and Musketeer Cannon O
v->add_piece(ARCHBISHOP, 'a');
v->add_piece(CHANCELLOR, 'c');
v->add_piece(AMAZON, 'd'); // also called Dragon in Musketeer, but Amazon is the most accurate
v->add_piece(LEOPARD, 'l');
v->add_piece(HAWK, 'h');
v->add_piece(UNICORN, 'u');
v->add_piece(SPIDER, 's');
v->add_piece(FORTRESS, 'f');
v->add_piece(MUSKETEER_ELEPHANT, 'e');
v->add_piece(MUSKETEER_CANNON, 'o');
//"********/rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR/******** w KQkq - 0 1"
v->startFen = "********/rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR/******** w KQkq - 0 1";
v->commitGates = true;
v->promotionPieceTypes = {LEOPARD, MUSKETEER CANNON, QUEEN, ROOK, BISHOP, KNIGHT}; // refer to PieceToCharTable to know the piece combination that can be promoted apart from the classic chess pieces
return v;
}
}


// S-House
// A hybrid variant of S-Chess and Crazyhouse.
// Pieces in the pocket can either be gated or dropped.
Expand Down Expand Up @@ -1847,6 +1877,7 @@ void VariantMap::init() {
add("placement", placement_variant());
add("sittuyin", sittuyin_variant());
add("seirawan", seirawan_variant());
add("musketeer", musketeer_variant());
add("shouse", shouse_variant());
add("dragon", dragon_variant());
add("paradigm", paradigm_variant());
Expand Down

0 comments on commit c28a066

Please sign in to comment.