const int KingAttackWeights[PIECE_TYPE_NB] = { 0, 0, 78, 56, 45, 11 };
// Penalties for enemy's safe checks
- const int QueenCheck = 745;
- const int RookCheck = 688;
- const int BishopCheck = 588;
- const int KnightCheck = 924;
+ const int QueenCheck = 810;
+ const int RookCheck = 888;
+ const int BishopCheck = 400;
+ const int KnightCheck = 790;
// Threshold for lazy evaluation
const Value LazyThreshold = Value(1500);
// number and types of the enemy's attacking pieces, the number of
// attacked and undefended squares around our king and the quality of
// the pawn shelter (current 'score' value).
- kingDanger = std::min(807, ei.kingAttackersCount[Them] * ei.kingAttackersWeight[Them])
- + 101 * ei.kingAdjacentZoneAttacksCount[Them]
- + 235 * popcount(undefended)
- + 134 * (popcount(b) + !!pos.pinned_pieces(Us))
- - 717 * !pos.count<QUEEN>(Them)
- - 7 * mg_value(score) / 5 - 5;
+ kingDanger = std::min(820, ei.kingAttackersCount[Them] * ei.kingAttackersWeight[Them])
+ + 103 * ei.kingAdjacentZoneAttacksCount[Them]
+ + 190 * popcount(undefended)
+ + 142 * (popcount(b) + !!pos.pinned_pieces(Us))
+ - 810 * !pos.count<QUEEN>(Them)
+ - 6 * mg_value(score) / 5 - 5;
// Analyse the safe enemy's checks which are possible on next move
safe = ~pos.pieces(Them);
// ...count safe + (behind & safe) with a single popcount.
int bonus = popcount((Us == WHITE ? safe << 32 : safe >> 32) | (behind & safe));
- bonus = std::min(16, bonus);
int weight = pos.count<ALL_PIECES>(Us) - 2 * ei.pe->open_files();
- return make_score(bonus * weight * weight / 18, 0);
+ return make_score(bonus * weight * weight / 16, 0);
}