mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 00:33:09 +00:00
Endgame malus for having a king in a pawnless flank
Original idea by "ElbertoOne", while "FauziAkram" suggested to put a small midgame penalty too. STC: LLR: 2.95 (-2.94,2.94) [0.00,5.00] Total: 71808 W: 13038 L: 12610 D: 46160 LTC: LLR: 2.95 (-2.94,2.94) [0.00,5.00] Total: 150874 W: 19828 L: 19221 D: 111825 Bench: 6077005
This commit is contained in:
parent
e77f38c431
commit
818b4a126d
1 changed files with 7 additions and 1 deletions
|
@ -198,6 +198,7 @@ namespace {
|
|||
const Score Hanging = S(48, 27);
|
||||
const Score ThreatByPawnPush = S(38, 22);
|
||||
const Score Unstoppable = S( 0, 20);
|
||||
const Score PawnlessFlank = S(20, 80);
|
||||
|
||||
// Penalty for a bishop on a1/h1 (a8/h8 for black) which is trapped by
|
||||
// a friendly pawn on b2/g2 (b7/g7 for black). This can obviously only
|
||||
|
@ -482,7 +483,8 @@ namespace {
|
|||
}
|
||||
|
||||
// King tropism: firstly, find squares that opponent attacks in our king flank
|
||||
b = ei.attackedBy[Them][ALL_PIECES] & KingFlank[Us][file_of(ksq)];
|
||||
File kf = file_of(ksq);
|
||||
b = ei.attackedBy[Them][ALL_PIECES] & KingFlank[Us][kf];
|
||||
|
||||
assert(((Us == WHITE ? b << 4 : b >> 4) & b) == 0);
|
||||
assert(popcount(Us == WHITE ? b << 4 : b >> 4) == popcount(b));
|
||||
|
@ -494,6 +496,10 @@ namespace {
|
|||
|
||||
score -= CloseEnemies * popcount(b);
|
||||
|
||||
// Penalty when our king is on a pawnless flank
|
||||
if (!(pos.pieces(PAWN) & (KingFlank[WHITE][kf] | KingFlank[BLACK][kf])))
|
||||
score -= PawnlessFlank;
|
||||
|
||||
if (DoTrace)
|
||||
Trace::add(KING, Us, score);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue