if(promoSuppress & PROMOTE) score = -INF; // non-Lion captures Lion after opponent did same\r
defer |= PROMOTE; // if we started, flag he cannot do it in reply\r
}\r
- if(score == -INF) { moveStack[curMove] = 0; goto abortMove; } // zap illegal moves\r
+ if(score == -INF) {\r
+ if(level == 1) repeatMove[repCnt++] = move & 0xFFFFFF | (p[tb.piece].value == 10*LVAL ? 3<<24 : 1 << 24);\r
+ moveStack[curMove] = 0; // zap illegal moves\r
+ goto abortMove;\r
+ }\r
}\r
#if 1\r
score = -Search(-beta, -iterAlpha, -difEval - tb.booty, replyDep, promoSuppress & ~PROMOTE, defer);\r
for(i=retFirst; i<retMSP; i++) printf("# %d. %08x %08x %s\n", i-50, moveStack[i], ret, MoveToText(moveStack[i], 0));\r
reason = NULL;\r
for(i=0; i<repCnt; i++) {if((repeatMove[i] & 0xFFFFFF) == ret) {\r
- reason = "Repeats earlier position";\r
+ if(repeatMove[i] & 1<<24) reason = (repeatMove[i] & 1<<25 ? "Distant capture of protected Lion" : "Counterstrike against Lion");\r
+ else reason = "Repeats earlier position";\r
break;\r
}\r
printf("# %d. %08x %08x %s\n", i, repeatMove[i], ret, MoveToText(repeatMove[i], 0));\r