diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index 2ea3b29c91..3d45672c3b 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -41,6 +41,8 @@ SUBSYSTEM_DEF(mapping) var/datum/space_level/transit var/datum/space_level/empty_space var/num_of_res_levels = 1 + /// Lookup for zlevel to station z. text = num. + var/list/z_to_station_z_index var/stat_map_name = "Loading..." @@ -259,6 +261,12 @@ SUBSYSTEM_DEF(mapping) INIT_ANNOUNCE("Loaded [name] in [(REALTIMEOFDAY - start_time)/10]s!") return parsed_maps +/datum/controller/subsystem/mapping/proc/setup_station_z_index() + z_to_station_z_index = list() + var/sz = 1 + for(var/i in station_start to (station_Start + islist(config.map_file)? (length(config.map_file) - 1) : 0)) + z_to_station_z_index["[i]"] = sz++ + /datum/controller/subsystem/mapping/proc/loadWorld() //if any of these fail, something has gone horribly, HORRIBLY, wrong var/list/FailedZs = list() @@ -271,6 +279,8 @@ SUBSYSTEM_DEF(mapping) INIT_ANNOUNCE("Loading [config.map_name]...") LoadGroup(FailedZs, "Station", config.map_path, config.map_file, config.traits, ZTRAITS_STATION, FALSE, config.orientation) + setup_station_z_index() + if(SSdbcore.Connect()) var/datum/DBQuery/query_round_map_name = SSdbcore.NewQuery("UPDATE [format_table_name("round")] SET map_name = '[config.map_name]' WHERE id = [GLOB.round_id]") query_round_map_name.Execute() diff --git a/code/controllers/subsystem/persistence/cleanable_debris.dm b/code/controllers/subsystem/persistence/cleanable_debris.dm index 13c80aee57..c4ef98121b 100644 --- a/code/controllers/subsystem/persistence/cleanable_debris.dm +++ b/code/controllers/subsystem/persistence/cleanable_debris.dm @@ -22,7 +22,11 @@ return loaded_debris = TRUE var/list/data = json_decode(file2text("[get_map_persistence_path()]/debris.json")) - + var/list/z_lookup = list() + /// reverse it + for(var/z in SSmapping.z_to_station_z_index) + var/sz = SSmapping.z_to_station_z_index[z] + z_lookup[num2text(sz)] = z /datum/controller/subsystem/persistence/proc/SaveMapDebris() if(fexists("[get_map_persistence_path()]/debris.json")) @@ -32,6 +36,7 @@ for(var/z in SSmapping.levels_by_trait(ZTRAIT_STATION)) allowed_z_cache[num2text(z)] = TRUE var/list/data = list() + var/list/z_lookup = SSmapping.z_to_station_z_index WRITE_FILE("[get_map_persistence_path()]/debris.json", json_encode(data))