// kingRing[color] is the zone around the king which is considered
// by the king safety evaluation. This consists of the squares directly
- // adjacent to the king, and the three (or two, for a king on an edge file)
+ // adjacent to the king, and (only for a king on its first rank) the
// squares two ranks in front of the king. For instance, if black's king
// is on g8, kingRing[BLACK] is a bitboard containing the squares f8, h8,
// f7, g7, h7, f6, g6 and h6.
// Init our king safety tables only if we are going to use them
if (pos.non_pawn_material(Them) >= QueenValueMg)
{
- ei.kingRing[Us] = b | shift<Up>(b);
+ ei.kingRing[Us] = b;
+ if (relative_rank(Us, pos.square<KING>(Us)) == RANK_1)
+ ei.kingRing[Us] |= shift<Up>(b);
+
ei.kingAttackersCount[Them] = popcount(b & ei.pe->pawn_attacks(Them));
ei.kingAdjacentZoneAttacksCount[Them] = ei.kingAttackersWeight[Them] = 0;
}