diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/levels/painters/StandardPainter.java b/src/com/shatteredpixel/shatteredpixeldungeon/levels/painters/StandardPainter.java index 709578dfc..271c17d56 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/levels/painters/StandardPainter.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/levels/painters/StandardPainter.java @@ -21,6 +21,8 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.items.Generator; import com.shatteredpixel.shatteredpixeldungeon.items.Gold; import com.shatteredpixel.shatteredpixeldungeon.items.Heap; +import com.shatteredpixel.shatteredpixeldungeon.items.Item; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfLiquidFlame; import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.Room; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; @@ -143,25 +145,42 @@ public class StandardPainter extends Painter { } } } - + + //TODO: this is almost a special room type now, consider moving this into its own painter if/when you address room gen significantly. private static void paintStudy( Level level, Room room ) { fill( level, room.left + 1, room.top + 1, room.width() - 1, room.height() - 1 , Terrain.BOOKSHELF ); fill( level, room.left + 2, room.top + 2, room.width() - 3, room.height() - 3 , Terrain.EMPTY_SP ); - for (Point door : room.connected.values()) { - if (door.x == room.left) { - set( level, door.x + 1, door.y, Terrain.EMPTY ); - } else if (door.x == room.right) { - set( level, door.x - 1, door.y, Terrain.EMPTY ); - } else if (door.y == room.top) { - set( level, door.x, door.y + 1, Terrain.EMPTY ); - } else if (door.y == room.bottom) { - set( level, door.x , door.y - 1, Terrain.EMPTY ); - } + for (Room.Door door : room.connected.values()) { + if (door.type == Room.Door.Type.LOCKED){ + //sneaky sneaky... + level.addItemToSpawn(new PotionOfLiquidFlame()); + } else { + if (door.x == room.left) { + set(level, door.x + 1, door.y, Terrain.EMPTY); + } else if (door.x == room.right) { + set(level, door.x - 1, door.y, Terrain.EMPTY); + } else if (door.y == room.top) { + set(level, door.x, door.y + 1, Terrain.EMPTY); + } else if (door.y == room.bottom) { + set(level, door.x, door.y - 1, Terrain.EMPTY); + } + } } set( level, room.center(), Terrain.PEDESTAL ); - } + if (Random.Int(2) != 0){ + Item prize = level.findPrizeItem(); + if (prize != null) { + level.drop(prize, (room.center().x + room.center().y * level.WIDTH)); + return; + } + } + + level.drop(Generator.random( Random.oneOf( + Generator.Category.POTION, + Generator.Category.SCROLL)), (room.center().x + room.center().y * level.WIDTH)); + } private static void paintBridge( Level level, Room room ) {