diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/RingRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/RingRoom.java index e8e62ead0..004aebd3d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/RingRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/RingRoom.java @@ -57,10 +57,24 @@ public class RingRoom extends StandardRoom { Painter.fill(level, this, passageWidth+2, centerDecoTiles()); Point center = center(); int xDir = 0, yDir = 0; + + //prefer to make the door further away if possible if (Random.Int(2) == 0) { - xDir = Random.Int(2) == 0 ? 1 : -1; + if (center.x < (left+right)/2f){ + xDir = 1; + } else if (center.x > (left+right)/2f){ + xDir = -1; + } else { + xDir = Random.Int(2) == 0 ? 1 : -1; + } } else { - yDir = Random.Int(2) == 0 ? 1 : -1; + if (center.y < (top+bottom)/2f){ + yDir = 1; + } else if (center.y > (top+bottom)/2f){ + yDir = -1; + } else { + yDir = Random.Int(2) == 0 ? 1 : -1; + } } Painter.set(level, center, Terrain.EMPTY_SP); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/entrance/EntranceRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/entrance/EntranceRoom.java index a969c8619..5eabc9725 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/entrance/EntranceRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/entrance/EntranceRoom.java @@ -95,6 +95,11 @@ public class EntranceRoom extends StandardRoom { level.transitions.add(new LevelTransition(level, entrance, LevelTransition.Type.REGULAR_ENTRANCE)); } + placeEarlyGuidePages(level, this); + + } + + public static void placeEarlyGuidePages(Level level, Room r){ //use a separate generator here so meta progression doesn't affect levelgen Random.pushGenerator(); @@ -104,9 +109,9 @@ public class EntranceRoom extends StandardRoom { int pos; do { //can't be on bottom row of tiles - pos = level.pointToCell(new Point( Random.IntRange( left + 1, right - 1 ), - Random.IntRange( top + 1, bottom - 2 ))); - } while (pos == level.entrance() || level.findMob(level.entrance()) != null); + pos = level.pointToCell(new Point( Random.IntRange( r.left + 1, r.right - 1 ), + Random.IntRange( r.top + 1, r.bottom - 2 ))); + } while (pos == level.entrance() || level.map[pos] == Terrain.REGION_DECO); level.drop( new Guidebook(), pos ); Document.ADVENTURERS_GUIDE.deletePage(Document.GUIDE_INTRO); } @@ -116,16 +121,15 @@ public class EntranceRoom extends StandardRoom { int pos; do { //can't be on bottom row of tiles - pos = level.pointToCell(new Point( Random.IntRange( left + 1, right - 1 ), - Random.IntRange( top + 1, bottom - 2 ))); - } while (pos == level.entrance() || level.findMob(level.entrance()) != null); + pos = level.pointToCell(new Point( Random.IntRange( r.left + 1, r.right - 1 ), + Random.IntRange( r.top + 1, r.bottom - 2 ))); + } while (pos == level.entrance() || level.map[pos] == Terrain.REGION_DECO); GuidePage p = new GuidePage(); p.page(Document.GUIDE_SEARCHING); level.drop( p, pos ); } Random.popGenerator(); - } private static ArrayList> rooms = new ArrayList<>(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/entrance/RegionDecoPatchEntranceRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/entrance/RegionDecoPatchEntranceRoom.java index b7cb96029..565283123 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/entrance/RegionDecoPatchEntranceRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/entrance/RegionDecoPatchEntranceRoom.java @@ -100,6 +100,9 @@ public class RegionDecoPatchEntranceRoom extends RegionDecoPatchRoom { } else { level.transitions.add(new LevelTransition(level, entrance, LevelTransition.Type.REGULAR_ENTRANCE)); } + + EntranceRoom.placeEarlyGuidePages(level, this); + } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/entrance/WaterBridgeEntranceRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/entrance/WaterBridgeEntranceRoom.java index 84c3a0d5e..a9277007a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/entrance/WaterBridgeEntranceRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/entrance/WaterBridgeEntranceRoom.java @@ -86,5 +86,8 @@ public class WaterBridgeEntranceRoom extends WaterBridgeRoom { } else { level.transitions.add(new LevelTransition(level, entrance, LevelTransition.Type.REGULAR_ENTRANCE)); } + + EntranceRoom.placeEarlyGuidePages(level, this); + } }