From b0c54f636f24b136b9bcfaa0dfbd810be0f11b06 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Sun, 16 May 2021 17:47:53 -0400 Subject: [PATCH] v0.9.3: Various levelgen tweaks: - Entrance and Exit rooms can no longer be connected - Tunnel room frequency down 25% - room count variance pulled in a bit - standard room count reduced by roughly 10%/20%/15%/15%/5% per region - removed chance for enemies to clump on floor 1 - level contents (items, enemies, etc) unchanged --- .../shatteredpixeldungeon/levels/CavesLevel.java | 10 +++++----- .../shatteredpixeldungeon/levels/CityLevel.java | 6 +++--- .../shatteredpixeldungeon/levels/HallsLevel.java | 6 +++--- .../shatteredpixeldungeon/levels/PrisonLevel.java | 8 ++++---- .../shatteredpixeldungeon/levels/RegularLevel.java | 4 ++-- .../shatteredpixeldungeon/levels/SewerLevel.java | 12 ++++++------ .../levels/builders/RegularBuilder.java | 4 ++-- .../levels/rooms/standard/EntranceRoom.java | 7 +++++++ .../levels/rooms/standard/ExitRoom.java | 7 +++++++ .../levels/rooms/standard/StandardRoom.java | 14 +++++++------- 10 files changed, 46 insertions(+), 32 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CavesLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CavesLevel.java index a8c21d0ce..5cb0eb8d6 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CavesLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CavesLevel.java @@ -63,16 +63,16 @@ public class CavesLevel extends RegularLevel { @Override protected int standardRooms(boolean forceMax) { - if (forceMax) return 9; - //6 to 9, average 7.333 - return 6+Random.chances(new float[]{2, 3, 3, 1}); + if (forceMax) return 7; + //6 to 7, average 6.333 + return 6+Random.chances(new float[]{2, 1}); } @Override protected int specialRooms(boolean forceMax) { if (forceMax) return 3; - //1 to 3, average 2.2 - return 1+Random.chances(new float[]{2, 4, 4}); + //2 to 3, average 2.2 + return 2+Random.chances(new float[]{4, 1}); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CityLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CityLevel.java index 9de1457b6..f253428b8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CityLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CityLevel.java @@ -58,9 +58,9 @@ public class CityLevel extends RegularLevel { @Override protected int standardRooms(boolean forceMax) { - if (forceMax) return 10; - //7 to 10, average 8.0 - return 7+Random.chances(new float[]{4, 3, 2, 1}); + if (forceMax) return 8; + //6 to 8, average 7 + return 6+Random.chances(new float[]{1, 3, 1}); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/HallsLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/HallsLevel.java index b1f5c4d79..37ad2e0bf 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/HallsLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/HallsLevel.java @@ -82,9 +82,9 @@ public class HallsLevel extends RegularLevel { @Override protected int standardRooms(boolean forceMax) { - if (forceMax) return 10; - //8 to 10, average 8.67 - return 8+Random.chances(new float[]{3, 2, 1}); + if (forceMax) return 9; + //8 to 9, average 8.33 + return 8+Random.chances(new float[]{2, 1}); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/PrisonLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/PrisonLevel.java index 2a2bab7d8..794a8579d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/PrisonLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/PrisonLevel.java @@ -64,16 +64,16 @@ public class PrisonLevel extends RegularLevel { @Override protected int standardRooms(boolean forceMax) { - if (forceMax) return 8; - //6 to 8, average 6.75 - return 6+Random.chances(new float[]{4, 2, 2}); + if (forceMax) return 6; + //5 to 6, average 5.5 + return 5+Random.chances(new float[]{1, 1}); } @Override protected int specialRooms(boolean forceMax) { if (forceMax) return 3; //1 to 3, average 2.0 - return 1+Random.chances(new float[]{3, 4, 3}); + return 1+Random.chances(new float[]{1, 3, 1}); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java index fb67315b4..3779f7fd8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java @@ -223,8 +223,8 @@ public abstract class RegularLevel extends Level { mobsToSpawn--; mobs.add(mob); - //add a second mob to this room - if (mobsToSpawn > 0 && Random.Int(4) == 0){ + //chance to add a second mob to this room, except on floor 1 + if (Dungeon.depth > 1 && mobsToSpawn > 0 && Random.Int(4) == 0){ mob = createMob(); tries = 30; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerLevel.java index 3c5d0d856..d0d7cfde2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerLevel.java @@ -57,16 +57,16 @@ public class SewerLevel extends RegularLevel { @Override protected int standardRooms(boolean forceMax) { - if (forceMax) return 7; - //5 to 7, average 5.57 - return 5+Random.chances(new float[]{4, 2, 1}); + if (forceMax) return 6; + //4 to 6, average 5 + return 4+Random.chances(new float[]{1, 3, 1}); } @Override protected int specialRooms(boolean forceMax) { - if (forceMax) return 3; - //1 to 3, average 1.8 - return 1+Random.chances(new float[]{4, 4, 2}); + if (forceMax) return 2; + //1 to 2, average 1.8 + return 1+Random.chances(new float[]{1, 4}); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/builders/RegularBuilder.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/builders/RegularBuilder.java index 148e855c5..0d8ca105c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/builders/RegularBuilder.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/builders/RegularBuilder.java @@ -60,8 +60,8 @@ public abstract class RegularBuilder extends Builder { return this; } - protected float[] pathTunnelChances = new float[]{1, 3, 1}; - protected float[] branchTunnelChances = new float[]{2, 2, 1}; + protected float[] pathTunnelChances = new float[]{2, 2, 1}; + protected float[] branchTunnelChances = new float[]{1, 1, 0}; public RegularBuilder setTunnelLength( float[] path, float[] branch){ pathTunnelChances = path; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/EntranceRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/EntranceRoom.java index e2395a4bd..29f541e0d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/EntranceRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/EntranceRoom.java @@ -94,5 +94,12 @@ public class EntranceRoom extends StandardRoom { Random.popGenerator(); } + + @Override + public boolean connect(Room room) { + //cannot connect to exit, otherwise works normally + if (room instanceof ExitRoom) return false; + else return super.connect(room); + } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/ExitRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/ExitRoom.java index 6326cea8b..a0513f9b7 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/ExitRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/ExitRoom.java @@ -56,4 +56,11 @@ public class ExitRoom extends StandardRoom { public boolean canPlaceCharacter(Point p, Level l) { return super.canPlaceCharacter(p, l) && l.pointToCell(p) != l.exit; } + + @Override + public boolean connect(Room room) { + //cannot connect to entrance, otherwise works normally + if (room instanceof EntranceRoom) return false; + else return super.connect(room); + } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/StandardRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/StandardRoom.java index d7a4886cc..c8b907a7a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/StandardRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/StandardRoom.java @@ -148,21 +148,21 @@ public abstract class StandardRoom extends Room { private static float[][] chances = new float[27][]; static { - chances[1] = new float[]{15, 10,10,5, 0,0,0, 0,0,0, 0,0,0, 0,0,0, 1,0,1,0,1,0,1,1,0,0}; - chances[2] = new float[]{15, 10,10,5, 0,0,0, 0,0,0, 0,0,0, 0,0,0, 1,1,1,1,1,1,1,1,1,1}; + chances[1] = new float[]{10, 10,10,5, 0,0,0, 0,0,0, 0,0,0, 0,0,0, 1,0,1,0,1,0,1,1,0,0}; + chances[2] = new float[]{10, 10,10,5, 0,0,0, 0,0,0, 0,0,0, 0,0,0, 1,1,1,1,1,1,1,1,1,1}; chances[4] = chances[3] = chances[2]; - chances[5] = new float[]{15, 10,10,0, 0,0,0, 0,0,0, 0,0,0, 0,0,0, 0,0,0,0,0,0,0,0,0,0}; + chances[5] = new float[]{10, 10,10,0, 0,0,0, 0,0,0, 0,0,0, 0,0,0, 0,0,0,0,0,0,0,0,0,0}; - chances[6] = new float[]{15, 0,0,0, 10,10,5, 0,0,0, 0,0,0, 0,0,0, 1,1,1,1,1,1,1,1,1,1}; + chances[6] = new float[]{10, 0,0,0, 10,10,5, 0,0,0, 0,0,0, 0,0,0, 1,1,1,1,1,1,1,1,1,1}; chances[10] = chances[9] = chances[8] = chances[7] = chances[6]; - chances[11] = new float[]{20, 0,0,0, 0,0,0, 10,10,5, 0,0,0, 0,0,0, 1,1,1,1,1,1,1,1,1,1}; + chances[11] = new float[]{10, 0,0,0, 0,0,0, 10,10,5, 0,0,0, 0,0,0, 1,1,1,1,1,1,1,1,1,1}; chances[15] = chances[14] = chances[13] = chances[12] = chances[11]; - chances[16] = new float[]{15, 0,0,0, 0,0,0, 0,0,0, 10,10,5, 0,0,0, 1,1,1,1,1,1,1,1,1,1}; + chances[16] = new float[]{10, 0,0,0, 0,0,0, 0,0,0, 10,10,5, 0,0,0, 1,1,1,1,1,1,1,1,1,1}; chances[20] = chances[19] = chances[18] = chances[17] = chances[16]; - chances[21] = new float[]{15, 0,0,0, 0,0,0, 0,0,0, 0,0,0, 10,10,5, 1,1,1,1,1,1,1,1,1,1}; + chances[21] = new float[]{10, 0,0,0, 0,0,0, 0,0,0, 0,0,0, 10,10,5, 1,1,1,1,1,1,1,1,1,1}; chances[26] = chances[25] = chances[24] = chances[23] = chances[22] = chances[21]; }