- // Rook mobility bonus in middle game and endgame, indexed by the number
- // of attacked squares not occupied by friendly pieces. X-ray attacks through
- // queens and rooks are also included.
- const Score RookMobilityBonus[16] = {
- S(-20,-36), S(-14,-19), S(-8, -3), S(-2, 13),
- S( 4, 29), S( 10, 46), S(14, 62), S(19, 79),
- S( 23, 95), S( 26,106), S(27,111), S(28,114),
- S( 29,116), S( 30,117), S(31,118), S(32,118)
+ // MobilityBonus[PieceType][attacked] contains bonuses for middle and end
+ // game, indexed by piece type and number of attacked squares not occupied by
+ // friendly pieces.
+ const Score MobilityBonus[][32] = {
+ {}, {},
+ { S(-35,-30), S(-22,-20), S(-9,-10), S( 3, 0), S(15, 10), S(27, 20), // Knights
+ S( 37, 28), S( 42, 31), S(44, 33) },
+ { S(-22,-27), S( -8,-13), S( 6, 1), S(20, 15), S(34, 29), S(48, 43), // Bishops
+ S( 60, 55), S( 68, 63), S(74, 68), S(77, 72), S(80, 75), S(82, 77),
+ S( 84, 79), S( 86, 81), S(87, 82), S(87, 82) },
+ { S(-17,-33), S(-11,-16), S(-5, 0), S( 1, 16), S( 7, 32), S(13, 48), // Rooks
+ S( 18, 64), S( 22, 80), S(26, 96), S(29,109), S(31,115), S(33,119),
+ S( 35,122), S( 36,123), S(37,124), S(38,124) },
+ { S(-12,-20), S( -8,-13), S(-5, -7), S(-2, -1), S( 1, 5), S( 4, 11), // Queens
+ S( 7, 17), S( 10, 23), S(13, 29), S(16, 34), S(18, 38), S(20, 40),
+ S( 22, 41), S( 23, 41), S(24, 41), S(25, 41), S(25, 41), S(25, 41),
+ S( 25, 41), S( 25, 41), S(25, 41), S(25, 41), S(25, 41), S(25, 41),
+ S( 25, 41), S( 25, 41), S(25, 41), S(25, 41), S(25, 41), S(25, 41),
+ S( 25, 41), S( 25, 41) }