I have the following definition for Musketeer with Seirawan gating rules and without the Fortress in SjaakII:
Code: Select all
################
# Musketeerish #
################
Variant: Musketeerish
Board: 8x8
FEN: "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR[EACOHDULeacohdul] w KQkq -"
XBoard pieces: "PNBRQ.EAC..O.....HD.ULKpnbrq.eac..o.....hd.ulk"
XBoard parent: "seirawan"
Zone: rank8 = a8,b8,c8,d8,e8,f8,g8,h8
Zone: rank7 = a7,b7,c7,d7,e7,f7,g7,h7
Zone: rank2 = a2,b2,c2,d2,e2,f2,g2,h2
Zone: rank1 = a1,b1,c1,d1,e1,f1,g1,h1
# Define the pieces
Piece: Knight
Move: leap (2,1)
Symbol: "N", "N,n"
Value: 320
Piece: Bishop
Move: slide (D,A)
Symbol: "B", "B,b"
Value: 325
Piece: Rook
Move: slide (H,V)
Symbol: "R", "R,r"
Value: 500
Piece: Queen
Move: slide (D,A,H,V)
Symbol: "Q", "Q,q"
Value: 950
Piece: Dragon
Move: slide (D,A,H,V)
Move: leap (2,1)
Symbol: "D", "D,d"
Value: 1200
Piece: Chancellor
Move: slide (H,V)
Move: leap (2,1)
Symbol: "C", "C,c"
Value: 875
Piece: Archbishop
Move: slide (A,D)
Move: leap (2,1)
Symbol: "A", "A,a"
Value: 825
Piece: Elephant
Move: leap (2,0)|(2,2)|(1,1)|(1,0)
Symbol: "E", "E,e"
Value: 500
Piece: Hawk
Move: leap (2,0)|(2,2)|(3,3)|(3,0)
Symbol: "H", "H,h"
Value: 300
Piece: Leopard
Move: leap (2,1)
Move: step 2NE,2NW,2SE,2SW
Symbol: "L", "L,l"
Value: 500
Piece: Cannon
Move: aleap (2,0)|(-2,0)|(0,2)|(0,-2)|(1,0)|(-1,0)|(0,1)|(0,-1)|(1,1)|(1,-1)|(-1,1)|(-1,-1)|(2,1)|(2,-1)|(-2,1)|(-2,-1)
Symbol: "O", "O,o"
Value: 500
Piece: Unicorn
Move: leap (2,1)|(3,1)
Symbol: "U", "U,u"
Value: 300
Piece: King
Move: leap (0,1)|(1,1)
Symbol: "K", "K,k"
Flags: royal
Castle: white e1-g1 with h1
Castle: white e1-c1 with a1
Castle: black e8-g8 with h8
Castle: black e8-c8 with a8
Piece: Pawn
Move: step N
Capture: step NE,NW
Special: rank2, rank7, step 2N
Symbol: " ", "P,p"
Flags: set_ep,take_ep
Promotion: rank8, rank1, "QRBN"
Value: 100
Rule: checkmate = win
Rule: stalemate = draw
Rule: repeat3 = draw
Rule: gate drops
It currently has all pieces defined in holdings, which is wrong, but you can feed it any FEN that only has two for each side and it will work fine. However, because it defines all pieces in the piece-to-char string , you run into an interface issue: XBoard's holding size needs to be larger than the board size to accomodate them all.
So really all possible combinations of pieces need to be defined as separate variants (to keep the holding size at 8) or SjaakII needs to send the setup command after setboard (when the pieces that participate are known), which I don't think is supposed to work for XBoard.
SjaakII produces the following move descriptors for the pieces, which look alright to me:
Gating moves don't honour the piece-drop bitmasks, but that would be a one-line change.