mirror of
https://github.com/sockspls/badfish
synced 2025-07-11 19:49:14 +00:00
King tropism
Bonus for each square that we attack in the flank where the opponent king is. Squares that we attack twice and are not protected by an enemy pawn count double. Passed STC: http://tests.stockfishchess.org/tests/view/577dfca60ebc5972faa166b8 LLR: 2.96 (-2.94,2.94) [0.00,5.00] Total: 48373 W: 9832 L: 9481 D: 29060 And LTC: http://tests.stockfishchess.org/tests/view/577e77870ebc5972faa166df LLR: 2.95 (-2.94,2.94) [0.00,5.00] Total: 8881 W: 1408 L: 1255 D: 6218 Bench: 7577046
This commit is contained in:
parent
eb20a87c67
commit
1d09ee70f7
1 changed files with 24 additions and 0 deletions
|
@ -491,6 +491,18 @@ namespace {
|
|||
const Bitboard TRank2BB = (Us == WHITE ? Rank2BB : Rank7BB);
|
||||
const Bitboard TRank7BB = (Us == WHITE ? Rank7BB : Rank2BB);
|
||||
|
||||
const Bitboard TheirCamp = (Us == WHITE ? Rank4BB | Rank5BB | Rank6BB | Rank7BB | Rank8BB
|
||||
: Rank5BB | Rank4BB | Rank3BB | Rank2BB | Rank1BB);
|
||||
|
||||
const Bitboard QueenSide = TheirCamp & (FileABB | FileBBB | FileCBB | FileDBB);
|
||||
const Bitboard CenterFiles = TheirCamp & (FileCBB | FileDBB | FileEBB | FileFBB);
|
||||
const Bitboard KingSide = TheirCamp & (FileEBB | FileFBB | FileGBB | FileHBB);
|
||||
|
||||
const Bitboard KingFlank[FILE_NB] = {
|
||||
QueenSide, QueenSide, QueenSide, CenterFiles,
|
||||
CenterFiles, KingSide, KingSide, KingSide
|
||||
};
|
||||
|
||||
enum { Minor, Rook };
|
||||
|
||||
Bitboard b, weak, defended, safeThreats;
|
||||
|
@ -558,6 +570,18 @@ namespace {
|
|||
|
||||
score += ThreatByPawnPush * popcount(b);
|
||||
|
||||
// King tropism: firstly, find squares that we attack in the enemy king flank
|
||||
b = ei.attackedBy[Us][ALL_PIECES] & KingFlank[file_of(pos.square<KING>(Them))];
|
||||
|
||||
// Secondly, add to the bitboard the squares which we attack twice in that flank
|
||||
// but which are not protected by a enemy pawn. Note the trick to shift away the
|
||||
// previous attack bits to the empty part of the bitboard.
|
||||
b = (b & ei.attackedBy2[Us] & ~ei.attackedBy[Them][PAWN])
|
||||
| (Us == WHITE ? b >> 4 : b << 4);
|
||||
|
||||
// Count all these squares with a single popcount
|
||||
score += make_score(7 * popcount(b), 0);
|
||||
|
||||
if (DoTrace)
|
||||
Trace::add(THREAT, Us, score);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue