Index: engine/dragon.c
===================================================================
RCS file: /cvsroot/gnugo/gnugo/engine/dragon.c,v
retrieving revision 1.156
diff -u -p -r1.156 dragon.c
--- engine/dragon.c	19 Oct 2005 09:55:04 -0000	1.156
+++ engine/dragon.c	22 Oct 2005 11:29:23 -0000
@@ -222,9 +222,12 @@ make_dragons(int stop_before_owl)
 	int acode = 0;
 	int dcode = 0;
 	int kworm = NO_MOVE;
+	int owl_nodes_before = get_owl_node_counter();
 	start_timer(3);
 	acode = owl_attack(str, &attack_point, 
 			   &DRAGON2(str).owl_attack_certain, &kworm);
+	DRAGON2(str).owl_attack_node_count
+	  = get_owl_node_counter() - owl_nodes_before;
 	if (acode != 0) {
 	  DRAGON2(str).owl_attack_point = attack_point;
 	  DRAGON2(str).owl_attack_code = acode;
Index: engine/liberty.h
===================================================================
RCS file: /cvsroot/gnugo/gnugo/engine/liberty.h,v
retrieving revision 1.248
diff -u -p -r1.248 liberty.h
--- engine/liberty.h	19 Oct 2005 09:55:04 -0000	1.248
+++ engine/liberty.h	22 Oct 2005 11:29:24 -0000
@@ -899,6 +899,7 @@ struct dragon_data2 {
   int owl_attack_point;    /* vital point for attack                         */
   int owl_attack_code;     /* ko result code                                 */
   int owl_attack_certain;  /* 0 if owl reading node limit is reached         */
+  int owl_attack_node_count;
   int owl_second_attack_point;/* if attacker gets both attack points, wins   */
   int owl_defense_point;   /* vital point for defense                        */
   int owl_defense_code;    /* ko result code                                 */
Index: engine/value_moves.c
===================================================================
RCS file: /cvsroot/gnugo/gnugo/engine/value_moves.c,v
retrieving revision 1.159
diff -u -p -r1.159 value_moves.c
--- engine/value_moves.c	21 Oct 2005 11:04:38 -0000	1.159
+++ engine/value_moves.c	22 Oct 2005 11:29:25 -0000
@@ -420,29 +420,31 @@ try_large_scale_owl_attack(int pos, int 
   else
     owl_node_limit *= 0.15;
 
-  if (verbose > 0)
-    verbose--;
+  if (DRAGON2(target).owl_attack_node_count < owl_node_limit) {
+    if (verbose > 0)
+      verbose--;
 
-  owl_nodes_before = get_owl_node_counter(); 
-  acode = owl_does_attack(pos, target, &kworm);
-  owl_nodes_used = get_owl_node_counter() - owl_nodes_before;
-  
-  if (acode >= DRAGON2(target).owl_attack_code
-      && acode == WIN) {
-    add_owl_attack_move(pos, target, kworm, acode);
-    DEBUG(DEBUG_LARGE_SCALE | DEBUG_MOVE_REASONS,
-	  "Move at %1m owl-attacks %1m on a large scale(%s).\n", 
-	  pos, target, result_to_string(acode));
+    owl_nodes_before = get_owl_node_counter(); 
+    acode = owl_does_attack(pos, target, &kworm);
+    owl_nodes_used = get_owl_node_counter() - owl_nodes_before;
+    
+    if (acode >= DRAGON2(target).owl_attack_code
+	&& acode == WIN) {
+      add_owl_attack_move(pos, target, kworm, acode);
+      DEBUG(DEBUG_LARGE_SCALE | DEBUG_MOVE_REASONS,
+	    "Move at %1m owl-attacks %1m on a large scale(%s).\n", 
+	    pos, target, result_to_string(acode));
+    }
+    else
+      DEBUG(DEBUG_LARGE_SCALE,
+	    "Move at %1m isn't a clean large scale attack on %1m (%s).\n",
+	    pos, target, result_to_string(acode));
+    
+    DEBUG(DEBUG_LARGE_SCALE, "  owl nodes used = %d, dist = %d\n", 
+	  owl_nodes_used, dist);
+    /* Restore settings. */
+    verbose = save_verbose;
   }
-  else
-    DEBUG(DEBUG_LARGE_SCALE,
-	  "Move at %1m isn't a clean large scale attack on %1m (%s).\n",
-	  pos, target, result_to_string(acode));
-  
-  DEBUG(DEBUG_LARGE_SCALE, "  owl nodes used = %d, dist = %d\n", 
-	owl_nodes_used, dist);
-  /* Restore settings. */
-  verbose = save_verbose;
   decrease_depth_values(); 
   owl_node_limit = save_owl_node_limit;
 }
