// Skip TT move if is not a capture or a promotion, this avoids
// qsearch tree explosion due to a possible perpetual check or
// similar rare cases when TT table is full.
- if (ttm != MOVE_NONE && !pos.move_is_capture(ttm) && !move_is_promotion(ttm))
+ if (ttm != MOVE_NONE && !pos.move_is_capture_or_promotion(ttm))
ttm = MOVE_NONE;
}
else
go_next_phase();
}
-MovePicker::MovePicker(const Position& p, Move ttm, const History& h, int parentCapture)
+MovePicker::MovePicker(const Position& p, Move ttm, const History& h, PieceType parentCapture)
: pos(p), H(h) {
assert (!pos.in_check());
// In ProbCut we consider only captures better than parent's move
- captureThreshold = parentCapture;
+ captureThreshold = piece_value_midgame(Piece(parentCapture));
phasePtr = ProbCutTable;
if ( ttm != MOVE_NONE
for (MoveStack* cur = moves; cur != lastMove; cur++)
{
m = cur->move;
- cur->score = pos.midgame_value_of_piece_on(move_to(m))
- - pos.type_of_piece_on(move_from(m));
+ cur->score = piece_value_midgame(pos.piece_on(move_to(m)))
+ - type_of_piece(pos.piece_on(move_from(m)));
if (move_is_promotion(m))
cur->score += QueenValueMidgame;
if ((seeScore = pos.see_sign(m)) < 0)
cur->score = seeScore - History::MaxValue; // Be sure we are at the bottom
else if (pos.move_is_capture(m))
- cur->score = pos.midgame_value_of_piece_on(move_to(m))
- - pos.type_of_piece_on(move_from(m)) + History::MaxValue;
+ cur->score = piece_value_midgame(pos.piece_on(move_to(m)))
+ - type_of_piece(pos.piece_on(move_from(m))) + History::MaxValue;
else
cur->score = H.value(pos.piece_on(move_from(m)), move_to(m));
}