- }
-
- // Check extension (~2 Elo)
- else if ( givesCheck
- && (pos.is_discovery_check_on_king(~us, move) || pos.see_ge(move)))
- extension = ONE_PLY;
-
- // Castling extension
- else if (type_of(move) == CASTLING)
- extension = ONE_PLY;
-
- // Shuffle extension
- else if ( PvNode
- && pos.rule50_count() > 18
- && depth < 3 * ONE_PLY
- && ++thisThread->shuffleExts < thisThread->nodes.load(std::memory_order_relaxed) / 4) // To avoid too many extensions
- extension = ONE_PLY;
-
- // Passed pawn extension
- else if ( move == ss->killers[0]
- && pos.advanced_pawn_push(move)
- && pos.pawn_passed(us, to_sq(move)))
- extension = ONE_PLY;
-
- // Calculate new depth for this move
- newDepth = depth - ONE_PLY + extension;
-
- // Step 14. Pruning at shallow depth (~170 Elo)
- if ( !rootNode
- && pos.non_pawn_material(us)
- && bestValue > VALUE_MATED_IN_MAX_PLY)
- {
- // Skip quiet moves if movecount exceeds our FutilityMoveCount threshold
- moveCountPruning = moveCount >= futility_move_count(improving, depth / ONE_PLY);