From 3663401c01b77466e0f4420b159e9d25e199f90e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20C=C3=A1ceres?= Date: Sat, 18 Jan 2025 01:08:11 +0100 Subject: [PATCH] Don't do standing pat when in check --- src/Lynx/Search/NegaMax.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Lynx/Search/NegaMax.cs b/src/Lynx/Search/NegaMax.cs index ffe2643d7..0689d0829 100644 --- a/src/Lynx/Search/NegaMax.cs +++ b/src/Lynx/Search/NegaMax.cs @@ -572,9 +572,10 @@ public int QuiescenceSearch(int ply, int alpha, int beta, CancellationToken canc Debug.Assert(staticEval != EvaluationConstants.NoHashEntry, "Assertion failed", "All TT entries should have a static eval"); Game.UpdateStaticEvalInStack(ply, staticEval); + bool isInCheck = position.IsInCheck(); - // Beta-cutoff (updating alpha after this check) - if (staticEval >= beta) + // Standing pat beta-cutoff (updating alpha after this check) + if (!isInCheck && staticEval >= beta) { PrintMessage(ply - 1, "Pruning before starting quiescence search"); return staticEval; @@ -682,7 +683,7 @@ public int QuiescenceSearch(int ply, int alpha, int beta, CancellationToken canc { Debug.Assert(bestMove is null); - var finalEval = Position.EvaluateFinalPosition(ply, position.IsInCheck()); + var finalEval = Position.EvaluateFinalPosition(ply, isInCheck); _tt.RecordHash(position, finalEval, 0, ply, finalEval, NodeType.Exact); return finalEval;