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)