Index: src/evaluate_move.c =================================================================== --- src/evaluate_move.c (revision 6) +++ src/evaluate_move.c (working copy) @@ -602,6 +602,11 @@ player[act_player].winner=0; player[other_player].winner=1; } + if(player[act_player].score==player[other_player].score) { + player[act_player].winner=1; + player[other_player].winner=1; + } + } printf("EVAL done\n"); Index: src/billard3d.c =================================================================== --- src/billard3d.c (revision 6) +++ src/billard3d.c (working copy) @@ -1760,8 +1760,17 @@ options_gamemode==options_gamemode_tournament && (player[0].winner || player[1].winner) ) { - tournament_evaluate_last_match( &tournament_state ); - tournament_state.wait_for_next_match=1; + if ( player[0].winner == player[1].winner ) + { // Draw + restart_game_common(); + player[act_player].winner=0; + player[other_player].winner=0; + } + else + { + tournament_evaluate_last_match( &tournament_state ); + tournament_state.wait_for_next_match=1; + } } } else { int old_cueball_ind; @@ -3654,6 +3663,7 @@ create_walls( &walls ); create_scene( &balls ); g_shot_due=1; + snooker_state.to_play=SN_PLAY_RED; }