diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index 0ae179c1ba..1e88d35e7e 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -470,6 +470,7 @@ GLOBAL_LIST_EMPTY(the_station_areas) return var/away_name + var/datum/space_level/away_level var/answer = input("What kind ? ","Away/VR") as null|anything in (possible_options + "Custom") switch(answer) @@ -481,14 +482,19 @@ GLOBAL_LIST_EMPTY(the_station_areas) return away_name = "[mapfile] custom" to_chat(usr,"Loading [away_name]...") - createSpecificZlevel(choice, ztraits, mapfile) + var/datum/map_template/template = new(mapfile, choice, ztraits) + away_level = template.load_new_z(ztraits) else away_name = answer to_chat(usr,"Loading [away_name]...") - createSpecificZlevel(choice, ztraits, away_name) + var/datum/map_template/template = new(away_name, choice) + away_level = template.load_new_z(ztraits) - message_admins("Admin [key_name_admin(usr)] has attempted to load [away_name] away mission.") - log_admin("Admin [key_name(usr)] has attempted to load [away_name] away mission.") + message_admins("Admin [key_name_admin(usr)] has loaded [away_name] away mission.") + log_admin("Admin [key_name(usr)] has loaded [away_name] away mission.") + if(!away_level) + message_admins("Loading [away_name] failed!") + return /datum/controller/subsystem/mapping/proc/RequestBlockReservation(width, height, z, type = /datum/turf_reservation, turf_type_override, border_type_override) UNTIL((!z || reservation_ready["[z]"]) && !clearing_reserved_turfs) diff --git a/code/modules/awaymissions/zlevel.dm b/code/modules/awaymissions/zlevel.dm index 406e1ced29..1e2e1fe43c 100644 --- a/code/modules/awaymissions/zlevel.dm +++ b/code/modules/awaymissions/zlevel.dm @@ -15,14 +15,6 @@ INIT_ANNOUNCE("Loaded [name] in [(REALTIMEOFDAY - start_time)/10]s!") GLOB.random_zlevels_generated[name] = TRUE -/proc/createSpecificZlevel(name = AWAY_MISSION_NAME, list/traits = list(ZTRAIT_AWAY = TRUE), map) - var/start_time = REALTIMEOFDAY - if(!load_new_z_level(map, name, SOUTH, traits)) - INIT_ANNOUNCE("Failed to load [name]! map filepath: [map]!") - return - INIT_ANNOUNCE("Loaded [name] in [(REALTIMEOFDAY - start_time)/10]s!") - GLOB.random_zlevels_generated[name] = TRUE - /obj/effect/landmark/awaystart name = "away mission spawn" desc = "Randomly picked away mission spawn points." diff --git a/code/modules/mapping/map_template.dm b/code/modules/mapping/map_template.dm index b102abb767..087552fada 100644 --- a/code/modules/mapping/map_template.dm +++ b/code/modules/mapping/map_template.dm @@ -90,25 +90,20 @@ /datum/map_template/proc/load_new_z(orientation = SOUTH, list/ztraits = src.ztraits || list(ZTRAIT_AWAY = TRUE), centered = TRUE) var/x = centered? max(round((world.maxx - width) / 2), 1) : 1 var/y = centered? max(round((world.maxy - height) / 2), 1) : 1 - message_admins("d1") + var/datum/space_level/level = SSmapping.add_new_zlevel(name, ztraits) - message_admins("d2") var/datum/parsed_map/parsed = load_map(file(mappath), x, y, level.z_value, no_changeturf=(SSatoms.initialized == INITIALIZATION_INSSATOMS), placeOnTop = TRUE, orientation = orientation) - message_admins("d3") var/list/bounds = parsed.bounds if(!bounds) return FALSE repopulate_sorted_areas() - message_admins("d4") + //initialize things that are normally initialized after map load parsed.initTemplateBounds() - message_admins("d5") smooth_zlevel(world.maxz) - message_admins("d6") log_game("Z-level [name] loaded at [x],[y],[world.maxz]") on_map_loaded(world.maxz, parsed.bounds) - message_admins("d7") return level diff --git a/code/modules/mapping/space_management/zlevel_manager.dm b/code/modules/mapping/space_management/zlevel_manager.dm index c5bd788ecd..6129c5fd2b 100644 --- a/code/modules/mapping/space_management/zlevel_manager.dm +++ b/code/modules/mapping/space_management/zlevel_manager.dm @@ -17,20 +17,14 @@ z_list += S /datum/controller/subsystem/mapping/proc/add_new_zlevel(name, traits = list(), z_type = /datum/space_level) - message_admins("d1_1") SEND_GLOBAL_SIGNAL(COMSIG_GLOB_NEW_Z, args) var/new_z = z_list.len + 1 - if(world.maxz < new_z) - message_admins("d1_2") + if (world.maxz < new_z) world.incrementMaxZ() - message_admins("d1_3") - //CHECK_TICK + CHECK_TICK // TODO: sleep here if the Z level needs to be cleared - message_admins("d1_4") var/datum/space_level/S = new z_type(new_z, name, traits) - message_admins("d1_5") z_list += S - message_admins("d1_6") return S /datum/controller/subsystem/mapping/proc/get_level(z)