summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/l_dgnbld.cc16
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]) = '+';
}