- // In main search we want to push captures with negative SEE values to
- // badCaptures[] array, but instead of doing it now we delay till when
- // the move has been picked up in pick_move_from_list(), this way we save
- // some SEE calls in case we get a cutoff (idea from Pablo Vazquez).
- Move m;
-
- for (MoveStack* cur = moves; cur != lastMove; cur++)
- {
- m = cur->move;
- cur->score = PieceValueMidgame[pos.piece_on(to_sq(m))]
- - type_of(pos.piece_moved(m));
-
- if (type_of(m) == PROMOTION)
- cur->score += PieceValueMidgame[promotion_type(m)];
- }
+ // In main search we want to push captures with negative SEE values to the
+ // badCaptures[] array, but instead of doing it now we delay until the move
+ // has been picked up in pick_move_from_list(). This way we save some SEE
+ // calls in case we get a cutoff.
+ for (auto& m : *this)
+ m.value = PieceValue[MG][pos.piece_on(to_sq(m))]
+ - Value(200 * relative_rank(pos.side_to_move(), to_sq(m)));