Depth extension, newDepth;
Value bestValue, value, ttValue, eval;
bool ttHit, inCheck, givesCheck, singularExtensionNode, improving;
- bool captureOrPromotion, doFullDepthSearch, moveCountPruning, skipQuiets;
+ bool captureOrPromotion, doFullDepthSearch, moveCountPruning, skipQuiets, ttCapture;
Piece moved_piece;
int moveCount, quietCount;
&& (tte->bound() & BOUND_LOWER)
&& tte->depth() >= depth - 3 * ONE_PLY;
skipQuiets = false;
+ ttCapture = false;
// Step 11. Loop through moves
// Loop through all pseudo-legal moves until no moves remain or a beta cutoff occurs
ss->moveCount = --moveCount;
continue;
}
+
+ if (move == ttMove && captureOrPromotion)
+ ttCapture = true;
// Update the current move (this must be done after singular extension search)
ss->currentMove = move;
r -= r ? ONE_PLY : DEPTH_ZERO;
else
{
+
+ // Increase reduction if ttMove is a capture
+ if (ttCapture)
+ r += ONE_PLY;
+
// Increase reduction for cut nodes
if (cutNode)
r += 2 * ONE_PLY;