diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm index 619a38e999f..6e9becdeb87 100644 --- a/code/controllers/subsystem/air.dm +++ b/code/controllers/subsystem/air.dm @@ -215,3 +215,12 @@ var/datum/subsystem/air/SSair if (z_level && AM.z != z_level) continue AM.build_network() + +/datum/subsystem/air/proc/setup_template_machinery(list/atmos_machines) + for(var/A in atmos_machines) + var/obj/machinery/atmospherics/AM = A + AM.atmosinit() + + for(var/A in atmos_machines) + var/obj/machinery/atmospherics/AM = A + AM.build_network() \ No newline at end of file diff --git a/code/controllers/subsystem/machines.dm b/code/controllers/subsystem/machines.dm index 0756fc45eaa..f77562a5950 100644 --- a/code/controllers/subsystem/machines.dm +++ b/code/controllers/subsystem/machines.dm @@ -45,3 +45,10 @@ var/datum/subsystem/machines/SSmachine continue processing.Remove(thing) +/datum/subsystem/machines/proc/setup_template_powernets(list/cables) + for(var/A in cables) + var/obj/structure/cable/PC = A + if(!PC.powernet) + var/datum/powernet/NewPN = new() + NewPN.add_cable(PC) + propagate_network(PC,PC.powernet) \ No newline at end of file diff --git a/code/controllers/subsystem/objects.dm b/code/controllers/subsystem/objects.dm index 1322ff90507..d8fbc8125e3 100644 --- a/code/controllers/subsystem/objects.dm +++ b/code/controllers/subsystem/objects.dm @@ -17,14 +17,12 @@ var/datum/subsystem/objects/SSobj /datum/subsystem/objects/Initialize(timeofday, zlevel) setupGenetics() - for(var/atom/movable/AM in world) - if (zlevel && AM.z != zlevel) + for(var/atom/A in world) + if (zlevel && A.z != zlevel) continue - AM.initialize() + A.initialize() if (zlevel) return ..() - for(var/turf/simulated/floor/F in world) - F.MakeDirty() ..() @@ -44,3 +42,8 @@ var/datum/subsystem/objects/SSobj burningobj.burn() else SSobj.burning.Remove(burningobj) + +/datum/subsystem/objects/proc/setup_template_objects(list/objects) + for(var/A in objects) + var/atom/B = A + B.initialize() \ No newline at end of file diff --git a/code/datums/helper_datums/map_template.dm b/code/datums/helper_datums/map_template.dm index 46a8f576e99..84e6a800056 100644 --- a/code/datums/helper_datums/map_template.dm +++ b/code/datums/helper_datums/map_template.dm @@ -37,17 +37,26 @@ return maploader.load_map(get_file(), T.x, T.y, T.z) - //initialize - for(var/A in block(T,locate(T.x+width, T.y+height, T.z))) - var/turf/B = A - for(var/atom/movable/AM in B) - AM.initialize() - if(istype(AM,/obj/structure/cable)) - var/obj/structure/cable/PC = AM - if(!PC.powernet) - var/datum/powernet/NewPN = new() - NewPN.add_cable(PC) - propagate_network(PC,PC.powernet) + + //initialize things that are normally initialized after map load + var/list/obj/machinery/atmospherics/atmos_machines = list() + var/list/obj/structure/cable/cables = list() + var/list/atom/atoms = list() + + for(var/L in block(T,locate(T.x+width, T.y+height, T.z))) + var/turf/B = L + for(var/A in B) + atoms += A + if(istype(A,/obj/structure/cable)) + cables += A + continue + if(istype(A,/obj/machinery/atmospherics)) + atmos_machines += A + continue + + SSobj.setup_template_objects(atoms) + SSmachine.setup_template_powernets(cables) + SSair.setup_template_machinery(atmos_machines) log_game("[name] loaded at at [T.x],[T.y],[T.z]") diff --git a/code/game/atoms.dm b/code/game/atoms.dm index efe8e4883fd..cab7e3fd1c4 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -369,3 +369,7 @@ var/list/blood_splatter_icons = list() /atom/Stat() . = ..() sleep(1) + +//This will be called after the map and objects are loaded +/atom/proc/initialize() + return diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 5cafd68d697..c7eb384360a 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -51,9 +51,6 @@ else return null -/atom/movable/proc/initialize() - return - /obj/proc/updateUsrDialog() if(in_use) var/is_in_use = 0 diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index a613c49ac0c..232652e01ff 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -178,3 +178,7 @@ var/list/icons_to_ignore_at_floor_init = list("damaged1","damaged2","damaged3"," /turf/simulated/floor/can_have_cabling() return !burnt && !broken + +/turf/simulated/floor/initialize() + ..() + MakeDirty() \ No newline at end of file