Game 'Werewolf vs Queen' : Chess { InventedBy = "H. G. Muller"; Invented = "2015"; Choice WerewolfSide; SetGameVariables { WerewolfSide = { "White", "Black" }; Array = "#{BlackArray}/pppppppp/8/8/8/8/PPPPPPPP/#{WhiteArray}"; PromotionTypes = "RBN"; DeduplicateMoves = true; } SetOtherVariables { // Here we fill in the BlackArray and WhiteArray based on the // selected value of AugmentedSide. The var keyword indicates // that they are dynamic variables, not variables that are // part of the definition of the game class. if( WerewolfSide == "White" ) { var WhiteArray = "RNBWKBNR"; var BlackArray = "rnbqkbnr"; } else { var WhiteArray = "RNBQKBNR"; var BlackArray = "rnbwkbnr"; } } AddPieceTypes { AddPieceType( "Werewolf", "W", 900, 900, "Wolf" ); Werewolf.XBetza = "Q3DA"; Werewolf.FallbackImage = "Dragon"; } AddRules { // add rule for Werewolf contagion local rule = PieceChangeTypeRule(); rule.TypeChangeOnCapture( Pawn, Werewolf, Werewolf ); rule.TypeChangeOnCapture( Bishop, Werewolf, Werewolf ); rule.TypeChangeOnCapture( Knight, Werewolf, Werewolf ); rule.TypeChangeOnCapture( Rook, Werewolf, Werewolf ); rule.TypeChangeOnCapture( Queen, Werewolf, Werewolf ); AddRule( rule ); // add Werewolf capture-by-overtake capability AddRule( OptionalCaptureByOvertakeRule( { Werewolf } ) ); } }