Normally killers of the next level are cleared when we enter a new node.
But if the move reaching the new node was a check evasion, we now set them
to the killers at this evasion level, to see if those still work after a
spite check.
curEval = f.pstEval + Evaluate(stm, f.rights);
alpha -= (alpha < curEval); //pre-compensate delayed-loss bonus
beta -= (beta <= curEval);
- killers[ply+1][0] = killers[ply+1][1] = 0;
+ if(ff->checker == CK_NONE) killers[ply+1][0] = killers[ply+1][1] /* = killers[ply+1][2]*/ = 0;
+ else if(ply > 0) killers[ply+1][0] = killers[ply-1][0], killers[ply+1][1] = killers[ply-1][1]; // inherit killers after check+evasion
if(-INF >= beta) { moveSP = oldSP; return -INF+1; }