The backend of a chess program that accepts arbitrary rectangular boards and some extra pieces
Pieces accepted:
Pawn, has options for promotion pieces, squares it can move on its first move and the ranks that it can first move from
King/Queen/Rook/Bishop/Knight, as normal in chess except for castling
Castling may be done with the king and any piece using an option for the files of each castling piece. The King always moves 2 squares and the castling piece moves to the other side of it
Champion (h), which can move 1 or 2 squares orthogonally or diagonally and can jump
Obstacle (o), which can teleport to any empty square but never capture