if(f.checker == CK_UNKNOWN) CheckTest(stm, ff, &f); // test for check if hash did not supply it
if(f.checker != CK_NONE) {
depth++, maxDepth++, reduction = originalReduction = 0 /*, killers[ply][2] = -1*/; // extend check evasions
- if(earlyGen && f.checkDist && maxDepth <= 1) ipMask = SafeIP(&f);
+ if(earlyGen && f.checkDist && maxDepth <= 1 && !promoDrops) ipMask = SafeIP(&f);
} else if(depth > LMR) {
if(depth - reduction < LMR) reduction = depth - LMR; // never reduce to below 'LMR' ply
depth -= reduction;
if(MoveGen(stm, &m, f.rights)) { // impossible (except for hash collision giving wrong in-check status)
if(DEBUG) Dump("King capture"); ff->depth = MAXPLY; ff->lim = -INF; moveSP = oldSP; anaSP = oldAna; return INF;
}
- if(f.checkDist && maxDepth <= 1) ipMask = SafeIP(&f);
+ if(f.checkDist && maxDepth <= 1 && !promoDrops) ipMask = SafeIP(&f);
}
if(hashMove) moveStack[--m.firstMove] = hashMove; // put hash move in front of list (duplicat!)
if(f.checker != CK_NONE) moveSP = m.drops = m.castlings; // clip off castlings when in check