diff --git a/code/__DEFINES/maps.dm b/code/__DEFINES/maps.dm index 6d4a10fa37f..7e059c19f33 100644 --- a/code/__DEFINES/maps.dm +++ b/code/__DEFINES/maps.dm @@ -172,6 +172,9 @@ Always compile, always use that verb, and always make sure that it works for wha #define PLACE_ISOLATED "isolated" //On isolated ruin z level ///Map generation defines +#define DEFAULT_SPACE_RUIN_LEVELS 7 +#define DEFAULT_SPACE_EMPTY_LEVELS 1 + #define PERLIN_LAYER_HEIGHT "perlin_height" #define PERLIN_LAYER_HUMIDITY "perlin_humidity" #define PERLIN_LAYER_HEAT "perlin_heat" diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index 78e6da154a0..67811674370 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -130,12 +130,12 @@ SUBSYSTEM_DEF(mapping) #ifndef LOWMEMORYMODE // Create space ruin levels while (space_levels_so_far < config.space_ruin_levels) + add_new_zlevel("Ruin Area [space_levels_so_far+1]", ZTRAITS_SPACE) ++space_levels_so_far - add_new_zlevel("Empty Area [space_levels_so_far]", ZTRAITS_SPACE) - // and one level with no ruins - for (var/i in 1 to config.space_empty_levels) + // Create empty space levels + while (space_levels_so_far < config.space_empty_levels + config.space_ruin_levels) + empty_space = add_new_zlevel("Empty Area [space_levels_so_far+1]", list(ZTRAIT_LINKAGE = CROSSLINKED)) ++space_levels_so_far - empty_space = add_new_zlevel("Empty Area [space_levels_so_far]", list(ZTRAIT_LINKAGE = CROSSLINKED)) // Pick a random away mission. if(CONFIG_GET(flag/roundstart_away)) @@ -251,7 +251,9 @@ SUBSYSTEM_DEF(mapping) // Generate deep space ruins var/list/space_ruins = levels_by_trait(ZTRAIT_SPACE_RUINS) if (space_ruins.len) - seedRuins(space_ruins, CONFIG_GET(number/space_budget), list(/area/space), themed_ruins[ZTRAIT_SPACE_RUINS]) + // Create a proportional budget by multiplying the amount of space ruin levels in the current map over the default amount + var/proportional_budget = round(CONFIG_GET(number/space_budget) * (space_ruins.len / DEFAULT_SPACE_RUIN_LEVELS)) + seedRuins(space_ruins, proportional_budget, list(/area/space), themed_ruins[ZTRAIT_SPACE_RUINS]) /// Sets up rivers, and things that behave like rivers. So lava/plasma rivers, and chasms /// It is important that this happens AFTER generating mineral walls and such, since we rely on them for river logic @@ -422,10 +424,6 @@ Used by the AI doomsday and the self-destruct nuke. qdel(query_round_map_name) #ifndef LOWMEMORYMODE - // TODO: remove this when the DB is prepared for the z-levels getting reordered - while (world.maxz < (5 - 1) && space_levels_so_far < config.space_ruin_levels) - ++space_levels_so_far - add_new_zlevel("Empty Area [space_levels_so_far]", ZTRAITS_SPACE) if(config.minetype == "lavaland") LoadGroup(FailedZs, "Lavaland", "map_files/Mining", "Lavaland.dmm", default_traits = ZTRAITS_LAVALAND) diff --git a/code/datums/map_config.dm b/code/datums/map_config.dm index 45a17e9093d..3eaee7d53c8 100644 --- a/code/datums/map_config.dm +++ b/code/datums/map_config.dm @@ -19,8 +19,8 @@ var/map_file = "MetaStation.dmm" var/traits = null - var/space_ruin_levels = 7 - var/space_empty_levels = 1 + var/space_ruin_levels = DEFAULT_SPACE_RUIN_LEVELS + var/space_empty_levels = DEFAULT_SPACE_EMPTY_LEVELS /// Boolean that tells us if this is a planetary station. (like IceBoxStation) var/planetary = FALSE