X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=gnushogi%2Ftcontrl.c;h=fda453430e793a36f785cf33af78b9b2d68b3dd9;hb=refs%2Fheads%2Fhgm;hp=4e1da41d8c2a69a2eaa02d0e7471ec475db19c54;hpb=af3a8b2625ff5f715af2b306dd486ed9cad4e790;p=gnushogi.git diff --git a/gnushogi/tcontrl.c b/gnushogi/tcontrl.c index 4e1da41..fda4534 100644 --- a/gnushogi/tcontrl.c +++ b/gnushogi/tcontrl.c @@ -163,18 +163,21 @@ void SetResponseTime(short side) { short rtf = in_opening_stage ? 8 : 2; short tcq = in_opening_stage ? 2 : 4; + int moves = TimeControl.moves[side]; if(!xboard) /* no pre-add of increment in XBoard mode */ TimeControl.clock[side] += TCadd; + if(TCflag == 2 && TCadd == 0) /* sudden death */ + moves = (moves < 30 ? 30 : moves); ResponseTime = (TimeControl.clock[side]) - / (((TimeControl.moves[side]) * rtf) + 1); + / (moves * rtf + 1); TCleft = (long)ResponseTime / tcq; ResponseTime += TCadd / 2; } if (TimeControl.moves[side] < 5) { - TCcount = MAXTCCOUNTX - 10; + TCcount = MAXTCCOUNTX - 6 - TimeControl.moves[side]; if (TCcount < 0) TCcount = 0; @@ -253,12 +256,15 @@ void SetResponseTime(short side) else { /* calculate avg time per move remaining */ + int moves = TimeControl.moves[side]; if(!xboard) /* no pre-add of increment in XBoard mode */ TimeControl.clock[side] += TCadd; + if(TCflag == 2 && TCadd == 0) /* sudden death */ + moves = (moves < 30 ? 30 : moves); ResponseTime = (TimeControl.clock[side]) - / (((TimeControl.moves[side]) * 2) + 1); + / (moves * 2 + 1); TCleft = (int) ResponseTime / 3; ResponseTime += TCadd / 2;