From 9f523e35d0f8ba345c2d7d4992989041c38862eb Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Wed, 2 Nov 2022 17:46:31 -0400 Subject: [PATCH] v2.0.0: fixed some secret rooms using the deck system --- .../shatteredpixeldungeon/items/Generator.java | 6 ++++++ .../levels/rooms/secret/SecretChestChasmRoom.java | 8 ++++---- .../levels/rooms/secret/SecretRunestoneRoom.java | 4 ++-- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java index b879bede5..33e0f2239 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java @@ -486,6 +486,7 @@ public class Generator { }; private static boolean usingFirstDeck = false; + private static HashMap defaultCatProbs = new LinkedHashMap<>(); private static HashMap categoryProbs = new LinkedHashMap<>(); public static void fullReset() { @@ -503,6 +504,7 @@ public class Generator { public static void generalReset(){ for (Category cat : Category.values()) { categoryProbs.put( cat, usingFirstDeck ? cat.firstProb : cat.secondProb ); + defaultCatProbs.put( cat, cat.firstProb + cat.secondProb ); } } @@ -528,6 +530,10 @@ public class Generator { return random(cat); } } + + public static Item randomUsingDefaults(){ + return randomUsingDefaults(Random.chances( defaultCatProbs )); + } public static Item random( Category cat ) { switch (cat) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/secret/SecretChestChasmRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/secret/SecretChestChasmRoom.java index f0a878ae8..e81e6f927 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/secret/SecretChestChasmRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/secret/SecretChestChasmRoom.java @@ -64,22 +64,22 @@ public class SecretChestChasmRoom extends SecretRoom { Point p = new Point(left+3, top+3); Painter.set(level, p, Terrain.EMPTY_SP); - level.drop(Generator.random(), level.pointToCell(p)).type = Heap.Type.LOCKED_CHEST; + level.drop(Generator.randomUsingDefaults(), level.pointToCell(p)).type = Heap.Type.LOCKED_CHEST; if (level.heaps.get(level.pointToCell(p)) != null) chests++; p.x = right-3; Painter.set(level, p, Terrain.EMPTY_SP); - level.drop(Generator.random(), level.pointToCell(p)).type = Heap.Type.LOCKED_CHEST; + level.drop(Generator.randomUsingDefaults(), level.pointToCell(p)).type = Heap.Type.LOCKED_CHEST; if (level.heaps.get(level.pointToCell(p)) != null) chests++; p.y = bottom-3; Painter.set(level, p, Terrain.EMPTY_SP); - level.drop(Generator.random(), level.pointToCell(p)).type = Heap.Type.LOCKED_CHEST; + level.drop(Generator.randomUsingDefaults(), level.pointToCell(p)).type = Heap.Type.LOCKED_CHEST; if (level.heaps.get(level.pointToCell(p)) != null) chests++; p.x = left+3; Painter.set(level, p, Terrain.EMPTY_SP); - level.drop(Generator.random(), level.pointToCell(p)).type = Heap.Type.LOCKED_CHEST; + level.drop(Generator.randomUsingDefaults(), level.pointToCell(p)).type = Heap.Type.LOCKED_CHEST; if (level.heaps.get(level.pointToCell(p)) != null) chests++; p = new Point(left+1, top+1); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/secret/SecretRunestoneRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/secret/SecretRunestoneRoom.java index 87aea55cf..4e6f7d390 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/secret/SecretRunestoneRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/secret/SecretRunestoneRoom.java @@ -68,12 +68,12 @@ public class SecretRunestoneRoom extends SecretRoom { do{ dropPos = level.pointToCell(random()); } while (level.map[dropPos] != Terrain.EMPTY); - level.drop( Generator.random(Generator.Category.STONE), dropPos); + level.drop( Generator.randomUsingDefaults(Generator.Category.STONE), dropPos); do{ dropPos = level.pointToCell(random()); } while (level.map[dropPos] != Terrain.EMPTY || level.heaps.get(dropPos) != null); - level.drop( Generator.random(Generator.Category.STONE), dropPos); + level.drop( Generator.randomUsingDefaults(Generator.Category.STONE), dropPos); do{ dropPos = level.pointToCell(random());