v2.5.0: fixed very rare cases of cave exit rooms failing to generate
This commit is contained in:
@@ -57,10 +57,24 @@ public class CaveExitRoom extends CaveRoom {
|
||||
super.paint(level);
|
||||
|
||||
int exit;
|
||||
int tries = 30;
|
||||
boolean valid;
|
||||
do {
|
||||
exit = level.pointToCell(random(2));
|
||||
|
||||
} while (level.map[exit] == Terrain.WALL || level.findMob(exit) != null);
|
||||
//need extra logic here as these rooms can spawn small and cramped in very rare cases
|
||||
if (tries-- > 0){
|
||||
valid = level.map[exit] != Terrain.WALL && level.findMob(exit) == null;
|
||||
} else {
|
||||
valid = false;
|
||||
for (int i : PathFinder.NEIGHBOURS4){
|
||||
if (level.map[exit+i] != Terrain.WALL){
|
||||
valid = true;
|
||||
}
|
||||
}
|
||||
valid = valid && level.findMob(exit) == null;
|
||||
}
|
||||
} while (!valid);
|
||||
Painter.set( level, exit, Terrain.EXIT );
|
||||
|
||||
for (int i : PathFinder.NEIGHBOURS8){
|
||||
|
||||
Reference in New Issue
Block a user