v3.1.0: adjusted prison standard rooms and overall standard room chances

This commit is contained in:
Evan Debenham
2025-05-01 11:15:53 -04:00
parent 7b4e39da84
commit a7d17836f0
4 changed files with 47 additions and 20 deletions
@@ -24,6 +24,9 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.painters;
import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.SpecialRoom;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.ChasmBridgeRoom;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.FissureRoom;
import com.watabou.utils.Random; import com.watabou.utils.Random;
import java.util.ArrayList; import java.util.ArrayList;
@@ -60,6 +63,31 @@ public class PrisonPainter extends RegularPainter {
} }
} }
for (Room r : rooms){
if (r instanceof SpecialRoom){
continue;
}
int chance = 15; //1/15 by default, some rooms can be more common though
if (r instanceof FissureRoom){
chance = 3;
} else if (r instanceof ChasmBridgeRoom){
chance = 5;
}
int cell;
for (int y = r.bottom-1; y > r.top; y--){
cell = r.left+1 + level.width()*y;
for (int x = r.left+1; x < r.right; x++){
if (level.map[cell] == Terrain.CHASM && level.map[cell-level.width()] == Terrain.CHASM){
if (Random.Int(chance) == 0){
level.map[cell] = Terrain.REGION_DECO_ALT;
}
}
cell++;
}
}
}
for (int i=0; i < w; i++) { for (int i=0; i < w; i++) {
if (map[i] == Terrain.WALL && if (map[i] == Terrain.WALL &&
(map[i + w] == Terrain.EMPTY || map[i + w] == Terrain.EMPTY_SP) && (map[i + w] == Terrain.EMPTY || map[i + w] == Terrain.EMPTY_SP) &&
@@ -73,7 +73,11 @@ public class CellBlockRoom extends StandardRoom {
int left = internal.left + 1 + (x * (w + Wspacing)); int left = internal.left + 1 + (x * (w + Wspacing));
int top = internal.top + 1 + (y * (h + Hspacing)); int top = internal.top + 1 + (y * (h + Hspacing));
Painter.fill(level, left, top, w, h, Terrain.EMPTY_SP); if (Random.Int(w*h) == 0){
Painter.fill(level, left, top, w, h, Terrain.REGION_DECO);
} else {
Painter.fill(level, left, top, w, h, Terrain.EMPTY_SP);
}
if (topBottomDoors == null) { if (topBottomDoors == null) {
switch (Random.Int(4)){ switch (Random.Int(4)){
@@ -76,7 +76,6 @@ public class FissureRoom extends StandardRoom {
} }
} }
} }
Painter.fill(level, this, 5, Terrain.REGION_DECO_ALT);
} }
} }
@@ -120,39 +120,35 @@ public abstract class StandardRoom extends Room {
//FIXME this is a very messy way of handing variable standard rooms //FIXME this is a very messy way of handing variable standard rooms
private static ArrayList<Class<?extends StandardRoom>> rooms = new ArrayList<>(); private static ArrayList<Class<?extends StandardRoom>> rooms = new ArrayList<>();
static { static {
rooms.add(EmptyRoom.class);
rooms.add(RegionDecoLineRoom.class);
rooms.add(StatueLineRoom.class);
rooms.add(SewerPipeRoom.class); rooms.add(SewerPipeRoom.class);
rooms.add(RegionDecoPatchRoom.class);
rooms.add(RingRoom.class); rooms.add(RingRoom.class);
rooms.add(WaterBridgeRoom.class); rooms.add(WaterBridgeRoom.class);
rooms.add(CircleBasinRoom.class); rooms.add(CircleBasinRoom.class);
rooms.add(RegionDecoPatchRoom.class);
rooms.add(SegmentedRoom.class); rooms.add(SegmentedRoom.class);
rooms.add(RegionDecoLineRoom.class);
rooms.add(PillarsRoom.class); rooms.add(PillarsRoom.class);
rooms.add(ChasmBridgeRoom.class); rooms.add(ChasmBridgeRoom.class);
rooms.add(CellBlockRoom.class); rooms.add(CellBlockRoom.class);
rooms.add(EmptyRoom.class); //TODO
rooms.add(CaveRoom.class); rooms.add(CaveRoom.class);
rooms.add(CustomDecoBridgeRoom.class);
rooms.add(CavesFissureRoom.class); rooms.add(CavesFissureRoom.class);
rooms.add(CirclePitRoom.class); rooms.add(CirclePitRoom.class);
rooms.add(CircleWallRoom.class); rooms.add(CircleWallRoom.class);
rooms.add(CustomDecoBridgeRoom.class);
rooms.add(HallwayRoom.class); rooms.add(HallwayRoom.class);
rooms.add(StatuesRoom.class);
rooms.add(LibraryRingRoom.class);
rooms.add(SegmentedLibraryRoom.class);
rooms.add(LibraryHallRoom.class); rooms.add(LibraryHallRoom.class);
rooms.add(LibraryRingRoom.class);
rooms.add(StatuesRoom.class);
rooms.add(SegmentedLibraryRoom.class);
rooms.add(RuinsRoom.class); rooms.add(RuinsRoom.class);
rooms.add(RegionDecoPatchRoom.class);
rooms.add(ChasmRoom.class); rooms.add(ChasmRoom.class);
rooms.add(SkullsRoom.class); rooms.add(SkullsRoom.class);
rooms.add(RitualRoom.class); rooms.add(RitualRoom.class);
rooms.add(RegionDecoPatchRoom.class);
rooms.add(PlantsRoom.class); rooms.add(PlantsRoom.class);
@@ -169,21 +165,21 @@ public abstract class StandardRoom extends Room {
private static float[][] chances = new float[27][]; private static float[][] chances = new float[27][];
static { static {
chances[1] = new float[]{0,5,0, 15,5,5,5,5, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,0,1,0,1,0,1,1,0,0}; chances[1] = new float[]{12,8,8,8,4, 0,0,0,0,0, 0,0,0,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[]{0,5,0, 15,5,5,5,5, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1,1,1,1,1,1}; chances[2] = new float[]{12,8,8,8,4, 0,0,0,0,0, 0,0,0,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[4] = chances[3] = chances[2];
chances[5] = new float[]{0,5,0, 15,5,5,0,5, 0,0,0,0,0, 0,0,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[]{12,8,8,8,0, 0,0,0,0,0, 0,0,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[]{0,5,0, 0,0,0,0,0, 10,10,10,5,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1,1,1,1,1,1}; chances[6] = new float[]{0,0,0,0,0, 10,10,10,5,5, 0,0,0,0,0, 0,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[10] = chances[9] = chances[8] = chances[7] = chances[6];
chances[11] = new float[]{0,5,0, 0,0,0,0,0, 0,0,0,0,0, 15,5,5,5,5, 0,0,0,0,0, 0,0,0,0,0, 1,1,1,1,1,1,1,1,1,1}; chances[11] = new float[]{0,0,0,0,0, 0,0,0,0,0, 16,8,8,4,4, 0,0,0,0,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[15] = chances[14] = chances[13] = chances[12] = chances[11];
chances[16] = new float[]{0,0,5, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 10,5,5,5,10, 0,0,0,0,0, 1,1,1,1,1,1,1,1,1,1}; chances[16] = new float[]{0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 10,10,10,5,5, 0,0,0,0,0, 1,1,1,1,1,1,1,1,1,1};
chances[20] = chances[19] = chances[18] = chances[17] = chances[16]; chances[20] = chances[19] = chances[18] = chances[17] = chances[16];
chances[21] = new float[]{0,0,5, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 11,8,5,5,8, 1,1,1,1,1,1,1,1,1,1}; chances[21] = new float[]{0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 10,10,10,5,5, 1,1,1,1,1,1,1,1,1,1};
chances[26] = chances[25] = chances[24] = chances[23] = chances[22] = chances[21]; chances[26] = chances[25] = chances[24] = chances[23] = chances[22] = chances[21];
} }