diff --git a/code/controllers/master_controller.dm b/code/controllers/master_controller.dm
index 25cccde7710..47f3b8a6499 100644
--- a/code/controllers/master_controller.dm
+++ b/code/controllers/master_controller.dm
@@ -88,17 +88,22 @@ datum/controller/game_controller/proc/setup()
datum/controller/game_controller/proc/setup_objects()
- world << "\red \b Initializing objects"
+ world << "Initializing areas"
+ sleep(-1)
+ for(var/area/area in all_areas)
+ area.initialize()
- world << "\red \b Initializing pipe networks"
+ world << "Initializing atmos machinery."
sleep(-1)
for(var/obj/machinery/atmospherics/unary/U in machines)
if(istype(U, /obj/machinery/atmospherics/unary/vent_pump))
diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm
index 70e32096b72..f00281f8c0a 100644
--- a/code/game/area/areas.dm
+++ b/code/game/area/areas.dm
@@ -21,14 +21,13 @@
luminosity = 1
lighting_use_dynamic = 0
- //If an APC is present it will set these, otherwise they stay off.
- power_light = 0
- power_equip = 0
- power_environ = 0
-
..()
-// spawn(15)
+/area/proc/initialize()
+ if(!requires_power || !(locate(/obj/machinery/power/apc) in apc))
+ power_light = 0
+ power_equip = 0
+ power_environ = 0
power_change() // all machines set to current power level, also updates lighting icon
InitializeLighting()