Move m;
Piece piece;
Square from, to;
+ int hs;
for (MoveStack* cur = moves; cur != lastMove; cur++)
{
from = move_from(m);
to = move_to(m);
piece = pos.piece_on(from);
- cur->score = H.move_ordering_score(piece, to);
+ hs = H.move_ordering_score(piece, to);
+
+ // Ensure history has always highest priority
+ if (hs > 0)
+ hs += 10000;
+
+ // Gain table based scoring
+ cur->score = hs + 16 * H.gain(piece, to);
}
}