X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fevaluate.cpp;h=9c5c12b8b7003c62d31d66064f2840bf1355cece;hp=e96e635c876f44901a456b41189c98eddbcb85e9;hb=8863afeb84d28716cfb5907044bc4e2a00230d42;hpb=5c75455c8ea998bb3e60bafbc3fab850bb877187 diff --git a/src/evaluate.cpp b/src/evaluate.cpp index e96e635c..9c5c12b8 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -171,6 +171,7 @@ namespace { const Score UndefendedMinor = make_score(25, 10); const Score TrappedRook = make_score(90, 0); const Score Unstoppable = make_score( 0, 20); + const Score LowMobPenalty = make_score(40, 20); // 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 @@ -186,6 +187,8 @@ namespace { (FileCBB | FileDBB | FileEBB | FileFBB) & (Rank7BB | Rank6BB | Rank5BB) }; + const Bitboard EdgeBB = Rank1BB | Rank8BB | FileABB | FileHBB; + // King danger constants and variables. The king danger scores are taken // from KingDanger[]. Various little "meta-bonuses" measuring the strength // of the enemy attack are added up into an integer, which is used as an @@ -491,6 +494,9 @@ Value do_evaluate(const Position& pos) { mobility[Us] += MobilityBonus[Pt][mob]; + if (mob <= 1 && (EdgeBB & s)) + score -= LowMobPenalty; + // Decrease score if we are attacked by an enemy pawn. The remaining part // of threat evaluation must be done later when we have full attack info. if (ei.attackedBy[Them][PAWN] & s)