/// ordering is at the current node.
/// MovePicker constructor for the main search
-MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const ButterflyHistory* mh,
- const CapturePieceToHistory* cph, const PieceToHistory** ch, Move cm, Move* killers)
- : pos(p), mainHistory(mh), captureHistory(cph), continuationHistory(ch),
- refutations{{killers[0], 0}, {killers[1], 0}, {cm, 0}}, depth(d) {
+MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const ButterflyHistory* mh, const LowPlyHistory* lp,
+ const CapturePieceToHistory* cph, const PieceToHistory** ch, Move cm, Move* killers, int pl)
+ : pos(p), mainHistory(mh), lowPlyHistory(lp), captureHistory(cph), continuationHistory(ch),
+ refutations{{killers[0], 0}, {killers[1], 0}, {cm, 0}}, depth(d) , ply(pl) {
assert(d > 0);
+ 2 * (*continuationHistory[0])[pos.moved_piece(m)][to_sq(m)]
+ 2 * (*continuationHistory[1])[pos.moved_piece(m)][to_sq(m)]
+ 2 * (*continuationHistory[3])[pos.moved_piece(m)][to_sq(m)]
- + (*continuationHistory[5])[pos.moved_piece(m)][to_sq(m)];
+ + (*continuationHistory[5])[pos.moved_piece(m)][to_sq(m)]
+ + (ply < MAX_LPH ? 4 * (*lowPlyHistory)[ply][from_to(m)] : 0);
else // Type == EVASIONS
{