if (is_ok((ss-2)->currentMove) && (ss-1)->currentMove == (ss-1)->ttMove)
{
- Value bonus2 = Value(((depth+1) / ONE_PLY) * ((depth+1) / ONE_PLY));
-
Square prevPrevSq = to_sq((ss-2)->currentMove);
Followupmoves.update(pos.piece_on(prevPrevSq), prevPrevSq, move);
- Square prevMoveSq = to_sq((ss-1)->currentMove);
- Piece prevMovePiece = pos.piece_on(prevMoveSq);
-
- HistoryStats& cmh2 = CounterMovesHistory[pos.piece_on(prevPrevSq)][prevPrevSq];
- cmh2.update(prevMovePiece, prevMoveSq, -bonus2);
+ // Extra penalty for TT move in previous ply when it gets refuted
+ HistoryStats& ttMoveCmh = CounterMovesHistory[pos.piece_on(prevPrevSq)][prevPrevSq];
+ ttMoveCmh.update(pos.piece_on(prevSq), prevSq, -bonus - 2 * depth / ONE_PLY - 1);
}
}