1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-05-01 01:03:09 +00:00

Enable easy move detection only for recaptures

It could lead to terrible mistakes otherwise, as
it happened during a game on playchess when on
this position (after white's f4):

2q4r/4b1k1/p3rpp1/3np2p/PpNpNP1P/1P1P2PQ/2P1R3/4R1K1 b - - 0 1

SF moves immediately e5xf4 instead of the correct f5.
In general during engine matches it is impossible the
opponent leaves a piece hanging or anyhow starts a
clear losing sequence. So avoid to fall in subtle traps.

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba 2012-01-12 21:26:25 +01:00
parent d98150dffc
commit 78908b7aed
2 changed files with 5 additions and 5 deletions

View file

@ -1265,7 +1265,7 @@ int Position::see(Move m) const {
{
Square capQq = to - pawn_push(sideToMove);
assert(capturedType == NO_PIECE_TYPE);
assert(!capturedType);
assert(type_of(piece_on(capQq)) == PAWN);
// Remove the captured pawn

View file

@ -531,15 +531,15 @@ namespace {
stop = true;
// Stop search early if one move seems to be much better than others
if ( depth >= 10
if ( depth >= 12
&& !stop
&& ( bestMoveNeverChanged
&& ( (bestMoveNeverChanged && pos.captured_piece_type())
|| elapsed_time() > (TimeMgr.available_time() * 40) / 100))
{
Value rBeta = bestValue - EasyMoveMargin;
(ss+1)->excludedMove = RootMoves[0].pv[0];
(ss+1)->skipNullMove = true;
Value v = search<NonPV>(pos, ss+1, rBeta - 1, rBeta, (depth * ONE_PLY) / 2);
Value v = search<NonPV>(pos, ss+1, rBeta - 1, rBeta, (depth - 3) * ONE_PLY);
(ss+1)->skipNullMove = false;
(ss+1)->excludedMove = MOVE_NONE;
@ -701,7 +701,7 @@ namespace {
if ( (move = (ss-1)->currentMove) != MOVE_NULL
&& (ss-1)->eval != VALUE_NONE
&& ss->eval != VALUE_NONE
&& pos.captured_piece_type() == NO_PIECE_TYPE
&& !pos.captured_piece_type()
&& !is_special(move))
{
Square to = to_sq(move);