@Override public boolean canConnect(Point p) { //refuses connections next to corners return super.canConnect(p) && ((p.x > left+1 && p.x < right-1) || (p.y > top+1 && p.y < bottom-1)); }
@Override public boolean canPlaceCharacter(Point p, Level l) { return super.canPlaceCharacter(p, l) && l.map[l.pointToCell(p)] != Terrain.EMPTY_SP; } }
@Override public int minHeight() { return Math.max(7, super.minHeight()); }
@Override public void paint(Level level) { super.paint(level); Painter.fill(level, this, Terrain.WALL); Painter.fill(level, this, 1, Terrain.SECRET_TRAP); Point center = center(); level.drop(Generator.random(), level.pointToCell(center)).setHauntedIfCursed(0.75f).type = Heap.Type.SKELETON; for (Point p : getPoints()){ int cell = level.pointToCell(p); if (level.map[cell] == Terrain.SECRET_TRAP){ level.setTrap(new SummoningTrap().hide(), cell); } } entrance().set(Door.Type.HIDDEN); }
int secrets = SecretRoom.secretsForFloor(Dungeon.depth); for (int i = 0; i < secrets; i++) initRooms.add(SecretRoom.createRoom());
public static void restoreRoomsFromBundle( Bundle bundle ) { runSecrets.clear(); if (bundle.contains( ROOMS )) { for (Class<? extends SecretRoom> type : bundle.getClassArray(ROOMS)) { if (type != null) runSecrets.add(type); } regionSecretsThisRun = bundle.getIntArray(REGIONS); } else { initForRun(); ShatteredPixelDungeon.reportException(new Exception("secrets array didn't exist!")); } }
@Override public int minWidth() { return Math.max(7, super.minWidth()); }
SecretRoom.storeRoomsInBundle( bundle );
SecretRoom.restoreRoomsFromBundle(bundle);
@Override public void paint(Level level) { super.paint(level); Painter.fill(level, this, Terrain.WALL); Painter.fill(level, this, 1, Terrain.SECRET_TRAP); Point center = center(); level.drop(Generator.random(), level.pointToCell(center)).setHauntedIfCursed(0.75f).type = Heap.Type.SKELETON; for (Point p : getPoints()){ int cell = level.pointToCell(p); if (level.map[cell] == Terrain.SECRET_TRAP){ level.setTrap(new SummoningTrap().hide(), cell); } } entrance().set(Door.Type.HIDDEN); }
int secrets = SecretRoom.secretsForFloor(Dungeon.depth); for (int i = 0; i < secrets; i++) initRooms.add(SecretRoom.createRoom());
public static void restoreRoomsFromBundle( Bundle bundle ) { runSecrets.clear(); if (bundle.contains( ROOMS )) { for (Class<? extends SecretRoom> type : bundle.getClassArray(ROOMS)) { if (type != null) runSecrets.add(type); } regionSecretsThisRun = bundle.getIntArray(REGIONS); } else { initForRun(); ShatteredPixelDungeon.reportException(new Exception("secrets array didn't exist!")); } }
@Override public int minWidth() { return Math.max(7, super.minWidth()); }
SecretRoom.storeRoomsInBundle( bundle );
SecretRoom.restoreRoomsFromBundle(bundle);
@Override public void paint(Level level) { super.paint(level); Painter.fill(level, this, Terrain.WALL); Painter.fill(level, this, 1, Terrain.EMPTY_SP); Painter.set(level, center(), Terrain.STATUE_SP); for (int i = 0; i < 3; i++){ int itemPos; do{ itemPos = level.pointToCell(random()); } while ( level.map[itemPos] != Terrain.EMPTY_SP || level.heaps.get(itemPos) != null); if( i == 0 ){ level.drop(new Bomb.DoubleBomb(), itemPos); } else { level.drop(Generator.randomMissile(), itemPos); } } entrance().set(Door.Type.HIDDEN); } }
@Override public boolean canConnect(Room r) { //never connects at the entrance return !(r instanceof SewerBossEntranceRoom) && super.canConnect(r); }
SecretRoom.initForRun();
@Override public boolean canPlaceCharacter(Point p, Level l) { return super.canPlaceCharacter(p, l) && l.map[l.pointToCell(p)] != Terrain.EMPTY_SP; } }
@Override public int minHeight() { return Math.max(7, super.minHeight()); }