diff options
Diffstat (limited to 'crawl-ref/source/l_dgnbld.cc')
-rw-r--r-- | crawl-ref/source/l_dgnbld.cc | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/crawl-ref/source/l_dgnbld.cc b/crawl-ref/source/l_dgnbld.cc index bf05095d69..91bfdbdcbf 100644 --- a/crawl-ref/source/l_dgnbld.cc +++ b/crawl-ref/source/l_dgnbld.cc @@ -606,9 +606,23 @@ LUAFN(dgn_make_box_doors) int index = random2avg(total_points, 2 + random2(number)); - if (_count_passable_neighbors(ls, lines, points[index]) < 3) + int tries = 50; + + while (_count_passable_neighbors(ls, lines, points[index]) <= 3) + { + tries--; index = random2(total_points); + if (tries == 0) + break; + } + + if (tries == 0) + { + door_count--; + continue; + } + sides[current_side]++; lines(points[index]) = '+'; } |