v2.2.0: slightly improved mining level secret generation
This commit is contained in:
+12
-3
@@ -49,6 +49,16 @@ public class MiningLevelPainter extends CavesPainter {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void generateGold(Level level, ArrayList<Room> rooms) {
|
protected void generateGold(Level level, ArrayList<Room> rooms) {
|
||||||
|
|
||||||
|
//replace all hidden doors with wall
|
||||||
|
// we do this here so that levels can still know where hidden passages are until the end
|
||||||
|
// but said passages can also sometimes have gold in them
|
||||||
|
for (int i = 0; i < level.length(); i++) {
|
||||||
|
if (level.map[i] == Terrain.SECRET_DOOR) {
|
||||||
|
level.map[i] = Terrain.WALL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//we start by counting all the gold purposefully made by rooms
|
//we start by counting all the gold purposefully made by rooms
|
||||||
for (int i = 0; i < level.length(); i++){
|
for (int i = 0; i < level.length(); i++){
|
||||||
if (level.map[i] == Terrain.WALL_DECO) {
|
if (level.map[i] == Terrain.WALL_DECO) {
|
||||||
@@ -112,8 +122,7 @@ public class MiningLevelPainter extends CavesPainter {
|
|||||||
|
|
||||||
float hiddenDoorChance = 0.90f;
|
float hiddenDoorChance = 0.90f;
|
||||||
|
|
||||||
//hidden doors become wall tiles
|
//hidden doors become wall tiles a bit later in painting
|
||||||
//(maybe sometimes become gold ore?)
|
|
||||||
//everything else becomes empty
|
//everything else becomes empty
|
||||||
for (Room r : rooms) {
|
for (Room r : rooms) {
|
||||||
for (Room n : r.connected.keySet()) {
|
for (Room n : r.connected.keySet()) {
|
||||||
@@ -122,7 +131,7 @@ public class MiningLevelPainter extends CavesPainter {
|
|||||||
int door = d.x + d.y * l.width();
|
int door = d.x + d.y * l.width();
|
||||||
|
|
||||||
if (d.type == Room.Door.Type.HIDDEN){
|
if (d.type == Room.Door.Type.HIDDEN){
|
||||||
l.map[door] = Terrain.WALL;
|
l.map[door] = Terrain.SECRET_DOOR;
|
||||||
} else {
|
} else {
|
||||||
//some of these are randomly hidden, using the same rules as regular levels
|
//some of these are randomly hidden, using the same rules as regular levels
|
||||||
if (Random.Float() < hiddenDoorChance) {
|
if (Random.Float() < hiddenDoorChance) {
|
||||||
|
|||||||
+5
-3
@@ -48,11 +48,13 @@ public class MineSecretRoom extends SecretRoom {
|
|||||||
|
|
||||||
entrance().set( Door.Type.HIDDEN );
|
entrance().set( Door.Type.HIDDEN );
|
||||||
|
|
||||||
int goldAmount = Random.NormalIntRange(4, 7);
|
int goldAmount = Random.NormalIntRange(3, 5);
|
||||||
|
|
||||||
//TODO maybe add per-quest decorations here?
|
|
||||||
|
|
||||||
for (int i = 0; i < goldAmount; i++){
|
for (int i = 0; i < goldAmount; i++){
|
||||||
|
int cell;
|
||||||
|
do {
|
||||||
|
cell = level.pointToCell(random(1));
|
||||||
|
} while (level.map[cell] == Terrain.WALL_DECO);
|
||||||
Painter.set(level, random(1), Terrain.WALL_DECO);
|
Painter.set(level, random(1), Terrain.WALL_DECO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user