} UndoInfo;\r
\r
char *array, fenArray[4000], *reason;\r
-int bWidth, bHeight, bsize, zone, currentVariant, chuFlag, tenFlag, chessFlag;\r
+int bWidth, bHeight, bsize, zone, currentVariant, chuFlag, tenFlag, chessFlag, repDraws;\r
int stm, xstm, hashKeyH, hashKeyL, framePtr, msp, nonCapts, rootEval, retMSP, retFirst, retDep, pvPtr, level, cnt50, mobilityScore;\r
int nodes, startTime, tlim1, tlim2, repCnt, comp;\r
Move retMove, moveStack[10000], path[100], repStack[300], pv[1000], repeatMove[300];\r
chuFlag = (currentVariant == V_CHU);\r
tenFlag = (currentVariant == V_TENJIKU);\r
chessFlag = (currentVariant == V_CHESS);\r
+ repDraws = (currentVariant == V_CHESS || currentVariant == V_SHATRANJ);\r
\r
for(i= -1; i<9; i++) { // board steps in linear coordinates\r
kStep[i] = STEP(direction[i&7].x, direction[i&7].y); // King\r
\r
if(flag & depth >= 0) printf("%2d:%d made %d/%d %s\n", depth, iterDep, curMove, msp, MoveToText(moveStack[curMove], 0));\r
for(i=2; i<=cnt50; i+=2) if(repStack[level-i+200] == hashKeyH) {\r
+ if(repDraws) { score = 0; goto repetition; }\r
moveStack[curMove] = 0; // erase forbidden move\r
if(!level) repeatMove[repCnt++] = move & 0xFFFFFF; // remember outlawed move\r
score = -INF; moveStack[curMove] = 0; goto repetition;\r