} UndoInfo;\r
\r
char *array, fenArray[4000], startPos[4000], *reason, checkStack[300];\r
-int bWidth, bHeight, bsize, zone, currentVariant, chuFlag, tenFlag, chessFlag, repDraws, stalemate, tsume, pvCuts, allowRep, entryProm, pVal;\r
+int bWidth, bHeight, bsize, zone, currentVariant, chuFlag, tenFlag, chessFlag, repDraws, stalemate;\r
+int tsume, pvCuts, allowRep, entryProm, okazaki, pVal;\r
int stm, xstm, hashKeyH=1, hashKeyL=1, framePtr, msp, nonCapts, rootEval, filling, promoDelta;\r
int retMSP, retFirst, retDep, pvPtr, level, cnt50, mobilityScore;\r
int ll, lr, ul, ur; // corner squares\r
if(dist[tb.from-tb.to] != 1 && attacks[2*tb.to + stm] && p[tb.epVictim[0]].value <= 50)\r
score = -INF; // our Lion is indeed made vulnerable and can be recaptured\r
} else { // other x Ln\r
- if(promoSuppress & PROMOTE) score = -INF; // non-Lion captures Lion after opponent did same\r
+ if(promoSuppress & PROMOTE) { // non-Lion captures Lion after opponent did same\r
+ if(!okazaki || attacks[2*tb.to + stm]) score = -INF;\r
+ }\r
defer |= PROMOTE; // if we started, flag he cannot do it in reply\r
}\r
if(score == -INF) {\r
printf("feature option=\"Full analysis PV -check 1\"\n"); // example of an engine-defined option\r
printf("feature option=\"Allow repeats -check 0\"\n");\r
printf("feature option=\"Promote on entry -check 0\"\n");\r
+ printf("feature option=\"Okazaki rule -check 0\"\n");\r
printf("feature option=\"Resign -check 0\"\n"); // \r
printf("feature option=\"Contempt -spin 0 -200 200\"\n"); // and another one\r
printf("feature option=\"Tsume -combo no /// Sente mates /// Gote mates\"\n");\r
if(sscanf(inBuf+7, "Allow repeats=%d", &allowRep) == 1) continue;\r
if(sscanf(inBuf+7, "Resign=%d", &resign) == 1) continue;\r
if(sscanf(inBuf+7, "Contempt=%d", &contemptFactor) == 1) continue;\r
+ if(sscanf(inBuf+7, "Okazaki rule=%d", &okazaki) == 1) continue;\r
if(sscanf(inBuf+7, "Promote on entry=%d", &entryProm) == 1) continue;\r
if(sscanf(inBuf+7, "Tsume=%s", command) == 1) {\r
if(!strcmp(command, "no")) tsume = 0; else\r