v2.0.0: fixed some secret rooms using the deck system

This commit is contained in:
Evan Debenham
2022-11-02 17:46:31 -04:00
parent 8f6d31d113
commit 9f523e35d0
3 changed files with 12 additions and 6 deletions
@@ -486,6 +486,7 @@ public class Generator {
}; };
private static boolean usingFirstDeck = false; private static boolean usingFirstDeck = false;
private static HashMap<Category,Float> defaultCatProbs = new LinkedHashMap<>();
private static HashMap<Category,Float> categoryProbs = new LinkedHashMap<>(); private static HashMap<Category,Float> categoryProbs = new LinkedHashMap<>();
public static void fullReset() { public static void fullReset() {
@@ -503,6 +504,7 @@ public class Generator {
public static void generalReset(){ public static void generalReset(){
for (Category cat : Category.values()) { for (Category cat : Category.values()) {
categoryProbs.put( cat, usingFirstDeck ? cat.firstProb : cat.secondProb ); 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); return random(cat);
} }
} }
public static Item randomUsingDefaults(){
return randomUsingDefaults(Random.chances( defaultCatProbs ));
}
public static Item random( Category cat ) { public static Item random( Category cat ) {
switch (cat) { switch (cat) {
@@ -64,22 +64,22 @@ public class SecretChestChasmRoom extends SecretRoom {
Point p = new Point(left+3, top+3); Point p = new Point(left+3, top+3);
Painter.set(level, p, Terrain.EMPTY_SP); 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++; if (level.heaps.get(level.pointToCell(p)) != null) chests++;
p.x = right-3; p.x = right-3;
Painter.set(level, p, Terrain.EMPTY_SP); 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++; if (level.heaps.get(level.pointToCell(p)) != null) chests++;
p.y = bottom-3; p.y = bottom-3;
Painter.set(level, p, Terrain.EMPTY_SP); 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++; if (level.heaps.get(level.pointToCell(p)) != null) chests++;
p.x = left+3; p.x = left+3;
Painter.set(level, p, Terrain.EMPTY_SP); 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++; if (level.heaps.get(level.pointToCell(p)) != null) chests++;
p = new Point(left+1, top+1); p = new Point(left+1, top+1);
@@ -68,12 +68,12 @@ public class SecretRunestoneRoom extends SecretRoom {
do{ do{
dropPos = level.pointToCell(random()); dropPos = level.pointToCell(random());
} while (level.map[dropPos] != Terrain.EMPTY); } while (level.map[dropPos] != Terrain.EMPTY);
level.drop( Generator.random(Generator.Category.STONE), dropPos); level.drop( Generator.randomUsingDefaults(Generator.Category.STONE), dropPos);
do{ do{
dropPos = level.pointToCell(random()); dropPos = level.pointToCell(random());
} while (level.map[dropPos] != Terrain.EMPTY || level.heaps.get(dropPos) != null); } 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{ do{
dropPos = level.pointToCell(random()); dropPos = level.pointToCell(random());